Maven知识回顾

Maven知识经验总结

自从上班后,好久没有花时间来沉淀相关的知识了,这篇文章就来总结一下我的maven知识体系吧。本章节不会以初学者角度来介绍maven而是站在总结的角度分析maven


前言

在java开发中最常用的就是Maven工程的开发,想起了刚开始接触到maven时,还认为maven太麻烦了,不想学,后面随着学习的深入,才渐渐明白maven可以极大的提高开发效率的。在没有用上maven前我还是到处百度,去寻找各种依赖jar包来开发。想想那时…


一、Maven常用控制台命令

1. 清除编译文件

mvn clean

2. 对项目进行编译,将.java类编译为.class文件

mvn compile

3. 测试命令(要有测试源码才可以)

mvn text

4. 打包命令

mvn package
  • 如果项目中有很多子项目的话【如微服务项目】,可以在总项目中运行这个打包命令;运行后就在进入子项目中,找到jar文件执行java -jar xxx-user-api.jar 即可启动各个微服务的子项目

5.maven安装本地jar包

  • 这个很有用,很多时候项目jar包老是报错,说未找到某个jar包,这时就可以找同时,加他拷贝它本地jar给我如何安装了

    (1) 步骤一:查看当前idea 的maven用的是idea自带的还是自己本地的,别安装错了,不然搞了半天发现没反应;

    (2)步骤二: 查看报错的依赖坐标

    <dependency>
        <groupId>com.xx1.xxx2</groupId>
        <artifactId>ggggxx</artifactId>
        <version>1.2</version>
    </dependency>
    

    (3)第三步根据坐标信息写cmd命令

    mvn install:install-file -Dfile=D:\xxx\xxx\ggggxx-1.2.jar -DgroupId=com.xx1.xxx2 -DartifactId=ggggxx -Dversion=1.2 -Dpackaging=jar
    
    • jar包当前放置路径:D:\xxx\xxx\ggggxx-1.2.jar
    • DgroupId: com.xx1.xxx2
    • DartifactId : ggggxx
    • Dversion :版本号

快速生成cmd命令JavaScript脚本,懂的可以丢到浏览器控制台的代码片段里边执行

let xmlStr=`<dependency>
             <groupId>com.xx1.xxx2</groupId>
             <artifactId>ggggxx</artifactId>
             <version>1.2</version>
         </dependency>`
const parser = new DOMParser();
const doc = parser.parseFromString(xmlStr, "application/xml");
const groupId = doc.querySelector("groupId").textContent;
const artifactId = doc.querySelector("artifactId").textContent;
const version = doc.querySelector("version").textContent;
let cmd=  `mvn install:install-file -Dfile=D:\\xxx\\xxx\\${artifactId}-${version}.jar -DgroupId=${groupId} -DartifactId=${artifactId} -Dversion=${version} -Dpackaging=jar`

在这里插入图片描述

二、Maven各种标签详情

标签说明
modelVersion指定了当前POM模型的版本
modules>module用来管理同个项目中的各个模块
properties版本管理,下边的标签可以自定义
dependencyManagement>dependencies>dependency提供一种管理依赖版本号的方式,用这个后在子项目中再次引入依赖jar包时则无需在写版本号
groupId项目域名
artifactId实际应该是项目名-模块名
packaging在父级项目中的pom.xml文件使用的packaging配置一定为pom;当参数设置为jar 时 运行会生成jar 包;还有war
build描述了如何编译及打包项目,具体的编译和打包工作
repositories指定仓库位置

1. 标签详解

插件作用
maven-clean-plugin清理上一次执行创建的目标文件
maven-resources-plugin处理资源文件和测试资源文件
maven-compiler-plugin编译原文件和测试源文件
maven-surefire-plugin执行测试文件
maven-jar-plugin创建jar
maven-install-plugin安装jar,将创建生成的jar拷贝到m2下面
maven-deploy-plugin发布jar

三、Maven高级

1.坐标的概念

groupId:组织标识,一般为:公司网址的反写+项目名
artifactId:项目名称,一般为:项目名-模块名
version:版本号 形式为0.0.1-SNAPSHOT:
	第一个 0 表示大版本号,第二个 0 表示分支版本号,第三个 0 表示小版本号
	SNAPSHOT -- 快照版本
	ALPHA -- 内侧版本
	BETA -- 公测版本
	RELEASE -- 稳定版本
	GA -- 正式发布
	
packaging:打包的方式,如:pom, jar, maven-plugin, ejb, war
clissifier:用来帮助定义构件输出的一些附属构件。

2. 依赖范围

依赖范围的使用,通过在引用第三方依赖时的<scope></scope>标签进行设置

  • 包括:compileprovidedruntimetest、system、import。 只在测试中使用,则选择test即可,默认为compile

3. 打包问题

maven打包时,默认不会将第三方依赖包打进来。可以在pom.xml中添加maven-assembly插件实现

 <build>
        <plugins>
            <!-- Maven Assembly Plugin 打包依赖进去 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4.1</version>
                <configuration>
                    <!-- get all project dependencies -->
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <!--    如果运行中出现 jar中没有主清单属性  问题 -->
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>org.test.MainApp</mainClass> <!-- 此处为主入口-->
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <!-- bind to the packaging phase -->
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StarLightLu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值