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

789 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一个项目就是一个工程 如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于maven就可以将一个项目拆分成多个工程

项目中使用jar包,需要“复制”、“粘贴”项目的lib中 同样的jar包重复的出现在不同的项目工程中,你需要做不停的复制粘贴的重复工作。借助于maven,可以将jar包保存在“仓库”中,不管在哪个项目只要使用引用即可就行。

jar包需要的时候每次都要自己准备好或到官网下载 借助于maven我们可以使用统一的规范方式下载jar包,规范

jar包版本不一致的风险 不同的项目在使用jar包的时候,有可能会导致各个项目的jar包版本不一致,导致未执行错误。借助于maven,所有的jar包都放在“仓库”中,所有的项目都使用仓库的一份jar包。

一个jar包依赖其他的jar包需要自己手动的加入到项目中 FileUpload组件->IO组件,commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar 极大的浪费了我们导入包的时间成本,也极大的增加了学习成本。借助于maven,它会自动的将依赖的jar包导入进来。

  我们在用 maven 构建 java 项目时,最常用的打包命令有mvn package、mvn install、deploy,这三个命令都可完成打 jar 包或 war包的功能,但这三个命令还是有区别的。三者的区别在于包函的 maven 生命的阶段和执行目标(goal)不同。maven 生命周期(lifecycle)由各个阶段组成,每个阶段由 maven 的插件 plugin 来执行完成。生命周期(lifecycle)主要包括clean、resources、compile、install、package、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 私服仓库。
文章参考:

1、mvn package、mvn install和mvn deploy区别

2、# 超级详细的Maven使用教程

3、