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

浙公网安备 33010602011771号