1、mvn deploy与mvn clean deploy区别
mvn (clean) package 在本地打包,但是本地maven仓库并没有这个新打的包

mvn (clean) install    不仅在本地打包,并且注入到了本地的maven仓库,这样就可以在其他项目下的pom文件中引用,而不改变远程maven仓库的版本。

mvn (clean) deploy  前两步都做,而且并把这个新包注入了远程的maven仓库。

其中clean可要可不要,加上clean就将之前的老包清理干净了。上面三个命令能用影响小的就用影响范围小的。

2、maven命令package、install、deploy的联系与区别
maven生命周期(lifecycle)由各个阶段组成,每个阶段由maven的插件plugin来执行完成。生命周期(lifecycle)主要包括clean、resources、complie、install、pacakge、testResources、testCompile、deploy等,其中带test开头的都是用业编译测试代码或运行单元测试用例的。

仔细查看上面的输出结果截图,可以发现,

mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。
由上面的分析可知主要区别如下,

package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库。
3、 命令参数 -D
上面列举的只是比较通用的命令,其实很多命令都可以携带参数以执行更精准的任务。

Maven命令可携带的参数类型如下:

-D:传入属性参数
比如命令:

mvn package -Dmaven.test.skip=true

以-D开头,将maven.test.skip的值设为true,就是告诉maven打包的时候跳过单元测试。同理,mvn deploy-Dmaven.test.skip=true代表部署项目并跳过单元测试。

-P: 使用指定的Profile配置
————————————————
 

Maven常见命令使用

创建类命令

create is deprecated in maven 3.0.5 and beyond,在maven3.0.5以上版本舍弃了create,使用generate生成项目

  • before:mvn archetype:create -DgroupId=**.** -DartifactId=** -DpackageName=**.** -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  • after:mvn archetype:generate -DgroupId=**.** -DartifactId=** -DpackageName=**.** -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


创建普通Maven项目

mvn archetype:create -DgroupId=packageName -DartifactId=projectName
1
创建之后,可以用IDE进行项目导入。

创建Web Maven项目

mvn archetype:create -DgroupId=packageName -DartifactId=webappName -DarchetypeArtifactId=maven-archetype-webapp
1
创建之后,可以用IDE进行项目导入。

发布第三方Jar到本地库中

mvn install:install-file -DgroupId=xxx.xx.xxxx -DartifactId=xxx -Dversion=0.0.1 -Dpackaging=jar -Dfile=路径/xxx-0.0.1.jar
1
构建打包类命令
编译源代码

mvn compile
1
编译测试代码

mvn test-compile
1
编译测试代码

mvn test
1
打包项目

mvn package
1
清除打包的项目

mvn clean
1
package、install、deploy等命令常于该命令配合使用。

清除历史打包并重新打包

mvn clean package
1
最常用的命令之一。

清除并install到本地

mvn clean install
1
查看当前项目已被解析的依赖

mvn dependency:list
1
常用于Jar包依赖冲突排查等。

上传到私服

mvn deploy
1
复杂组合命令
强制检查更新后打包

mvn clean package -U
1
-U参数,强制检查更新,防止缓存等原因使用历史依赖,在自动化发布脚本中会经常用到。

打包排除单元测试

mvn clean package -Dmaven.test.skip=true
1
打包并指定环境

mvn clean package -P test
1
test为maven中配置的不同打包环境名称。

打包指定子项目和父项目

mvn clean install -pl C -am -Dmaven.test.skip=true
1
说明:对父工程P、子模块C、以及子模块C依赖的B、A模块执行mvn clean install操作,涉及到的P、A、B、C模块全部install到本地。

在自动化构建时,通常会用到该组命令,对于基础板块可将install命令换成deploy命令,发布到私服中。

只打包父工程

mvn clean install -N
1
只打包父工程P,子模块不会执行相关操作。有父子关系的项目构建上传到私服时,往往需要先构建上传父项目(pom项目)。

只打包A工程

mvn clean install -pl A -am
1
由于A工程不依赖其他模块,因此仅对P和A进行mvn clean install操作。

被依赖项目打包

mvn clean install -pl A -amd
1
对父工程P、子模块A以及依赖于A模块的B、C模块执行mvn clean install操作。使用场景:基础的common模块变更了,通过该命令将依赖common的其他模块也进行重新mvn clean install操作。

Jar包发布

mvn clean deploy -Dmaven.test.skip=true
1
上述命令可以对jar包进行打包发布到仓库,同时需要在pom.xml中通过distributionManagement元素配置要发布的私有仓库地址信息。私有仓库的密码等信息在setting.xml文件中配置。

打包指定setting.xml文件

mvn clean package -s settings.xml
1
万能的命令

最后,还有一个万能的命令,help命令:

mvn -help 或 mvn -h
1
通过此命令可以查看更多Maven支持的命令操作。
 

Maven基础(2):Maven详解_mvn 命令_CodingALife的博客-CSDN博客

https://blog.csdn.net/wo541075754/article/details/122808511

​​​​​​​

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐