Maven生命周期、插件以及命令package、install、deploy的区别

Maven生命周期、插件以及命令package、install、deploy的区别

Maven生命周期

生命周期(lifecycle)可以理解成由各种plugin按照一定的顺序执行来完成java项目清理、编译、打包、测试、布署等整个项目的流程的一个过程。

plugin:

生命周期(lifecycle)由各个阶段组成,每个阶段由maven的插件plugin来执行完成。生命周期(lifecycle)主要包括clean、resources、complie、install、package、testResources、testCompile、deploy等,其中带test开头的都是用于编译测试代码或运行单元测试用例的。
 各个插件的执行顺序一般是:1.clean->2.resources->3.compile->4.testResources->5.testCompile->6.test->7.jar->8.install。
maven内置的各种插件,如果pom中没有配置就调用默认的内置插件,如果pom中配置了就调用配置的插件

maven的构建过程:

由各种插件按照一定的顺序执行来完成项目的编译,单元测试、打包、布署的完成

clean插件

maven-clean-plugin

resources插件

maven-resources-plugin

compile插件

maven-compiler-plugin

单元测试插件

maven-surefire-plugin

打包插件

maven-jar-plugin、maven-assembly-plugin、maven-shade-plugin 3种
 maven-jar-plugin:可执行jar与依赖包是分开的,需要建立lib目录里来存放需要的j依赖包,且需要jar和lib目录在同级目录
 maven-assembly-plugin:这个插件可以把所有的依赖包打入到可执行jar包。但是该插件有个bug会缺失spring的xds文件,导致无法运行jar,同时如果同级目录还有其它可执行jar文件依赖可能会产生冲突。
 maven-shade-plugin:所有的依赖包打入到可执行jar包,如果同级目录有其它可执行jar,依赖可能会产生冲突,且运行jar时,有时会出现SF、DSA、RSA文件冲突的提示,需要排除META-INF目录下的文件。

本地发布插件

maven-install-plugin
发布插件的功能就是把构建好的artifact部署到本地仓库

远程发布插件

maven-deploy-plugin
将构建好的artifact部署到远程仓库。

maven命令package、install、deploy的联系与区别

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私服仓库。

posted @ 2020-08-25 13:49  奋斗的小宋  阅读(308)  评论(0)    收藏  举报