“mvn clean package”和“mvn clean install”有什么不同?

2022-08-31 04:37:41

和 之间到底有什么区别?当我运行这两个命令时,它们似乎都执行了相同的操作。mvn clean packagemvn clean install


答案 1

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

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

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

文档


答案 2

什么 clean 做什么(在两个命令中都常见) - 删除上一个版本生成的所有文件


对于命令安装之间的区别,您首先需要了解maven项目的生命周期


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

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

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

执行顺序

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

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

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

至于mvn安装,它运行所有生命周期阶段的命令,直到安装,其中还包括软件包

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


因此,实际上,它的意思是,安装命令可以完成打包命令所做的一切,甚至更多(将包安装到本地存储库中,以便在本地其他项目中用作依赖项)

来源:Maven 生命周期参考


推荐