“mvn clean package”和“mvn clean install”有何不同?

问题描述 投票:187回答:5

mvn clean packagemvn clean install究竟有什么区别?当我运行这两个命令时,它们似乎都做同样的事情。

java maven
5个回答
287
投票

好吧,两者都会干净。这意味着他们将删除目标文件夹。真正的问题是包和安装之间的区别是什么?

package将编译您的代码并将其打包。例如,如果您的pom说该项目是一个jar,它会在您打包并将其放在目标目录中的某个位置时创建一个jar(默认情况下)。

install将编译和打包,但它也会将包放在您的本地存储库中。这将使其他项目可以引用它并从本地存储库中获取它。

Documentation


19
投票

什么干净(在两个命令中都很常见) - 删除前一个版本生成的所有文件


根据命令包和安装之间的区别,首先需要了解maven项目的生命周期


这些是maven中的默认生命周期阶段

  • 验证 - 验证项目是否正确并且所有必要信息都可用
  • compile - 编译项目的源代码
  • test - 使用合适的单元测试框架测试编译的源代码。这些测试不应要求打包或部署代码
  • package - 获取已编译的代码并将其打包为可分发的格式,例如JAR。
  • 验证 - 对集成测试结果进行任何检查,以确保满足质量标准
  • install - 将软件包安装到本地存储库中,以便在本地用作其他项目的依赖项
  • deploy - 在构建环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享。

Maven如何工作,如果您为任何生命周期阶段运行命令,它会在执行命令本身之前按顺序执行每个默认生命周期阶段。

执行顺序

验证>>编译>>测试(可选)>>包>>验证>>安装>>部署

因此,当您运行命令mvn package时,它会运行所有生命周期阶段的命令直到package

validate >> compile >> test(optional)>> package

至于mvn install,它运行所有生命周期阶段的命令直到安装,包括包

验证>>编译>>测试(可选)>>包>>验证>>安装


因此,有效的意思是,install命令执行package命令执行的所有操作以及更多(将软件包安装到本地存储库,以便在本地用作其他项目中的依赖项)

资料来源:Maven lifecycle reference


17
投票

包将根据POM文件生成Jar / war。 install会将生成的jar文件安装到本地存储库以获取其他依赖项(如果有)。

封装阶段后安装阶段


9
投票

打包和安装是maven构建生命周期中的各个阶段。包阶段将执行之前的所有阶段,它将停止将项目打包为jar。类似地,安装阶段将执行所有先前阶段,最后在本地为其他依赖项目安装项目。

要了解maven构建生命周期,请通过以下链接https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html


3
投票

package将包装的jarwar添加到你的target文件夹,我们可以检查它,我们清空目标文件夹(使用mvn clean),然后运行mvn packageinstall将完成package所做的所有事情,此外它还将在本地存储库中添加打包的jarwar。我们可以通过检查你的.m2文件夹来确认。

© www.soinside.com 2019 - 2024. All rights reserved.