MAVEN——PACKAGE、INSTALL、DEPLOY的联系与区别

我们在用maven构建java项目时,最常用的打包命令有mvn package、mvn install、deploy,这三个命令都可完成打jar包或war(当然也可以是其它形式的包)的功能,但这三个命令还是有区别的。下面通过分别执行这三个命令的输出结果,来分析各自所执行的maven的生命周期。

MVN CLEAN PACKAGE

MVN CLEAN INSTALL

MVN CLEAN DEPLOY(忽略最后的BUILD FAILURE)

通过三个命令的输出我们可以看出三者的区别在于包函的maven生命的阶段和执行目标(goal)不同。在我的上一篇文章https://blog.csdn.net/zhaojianting/article/details/80321488 中介绍了maven的生命周期和各种插件,不明白的请参考此博文。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私服仓库

在TARGET 目录下可找到 JAR包

注: 此方式打出来的是没有加入依赖包的

maven要打依赖包,需要添加插件

复制代码
复制代码
<build>
 <plugins>
  <plugin>
   <artifactId>maven-assembly-plugin</artifactId>
   <configuration>
	<archive>
	  <manifest>
	    <!--main主类的全类名-->
	    <mainClass>main.Class</mainClass>
	  </manifest>
	</archive>
	<descriptorRefs>
	  <descriptorRef>jar-with-dependencies</descriptorRef>
	</descriptorRefs>
   </configuration>
   <executions>
	<execution>
	  <id>make-assembly</id>
	  <!--指定在打包节点执行jar包合并操作, 使用package就可以打出全量包-->
	  <phase>package</phase>
	  <goals>
		<goal>single</goal>
	  </goals>
	</execution>
   </executions>
  </plugin>
 </plugins>
</build>
相关推荐
小当家.1057 小时前
Maven与Gradle完整对比指南:构建工具深度解析
java·gradle·maven
indexsunny8 小时前
互联网大厂Java面试实战:Spring Boot与微服务在电商场景的应用解析
java·spring boot·redis·微服务·kafka·gradle·maven
qq_5470261798 小时前
Maven 仓库管理
java·maven
xiaobaishuoAI11 小时前
后端工程化实战指南:从规范到自动化,打造高效协作体系
java·大数据·运维·人工智能·maven·devops·geo
qq_5470261791 天前
Maven 使用指南
java·maven
计算机毕设指导61 天前
基于微信小程序的钓鱼论坛系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven
计算机毕设指导61 天前
基于微信小程序的精致护肤购物系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
这就是佬们吗1 天前
Windows 的 CMD 网络环境:解决终端无法联网与更新的终极指南
java·windows·git·python·spring·maven
色空大师2 天前
服务打包包名设置
java·elasticsearch·maven·打包
乘风归趣2 天前
idea、maven问题
java·maven·intellij-idea