3

我的maven项目打包 a war,它只被部署并且本身不依赖于其他项目(换句话说,它是最终可部署的)。

问题

  • 有什么理由mvn install在那个包上运行,除了mvn package只把它放在localRepository?
  • 如果没有任何东西依赖于它,为什么还要安装最终部署?
4

1 回答 1

3

对于最终的可部署工件,确实可能没有理由调用install阶段而不是package阶段:您想要构建.war文件并且确实不需要将其安装在本地存储库中。

但是,如果有的话,您可能希望始终运行集成测试作为一种习惯。查看默认的 Maven 生命周期,这些阶段发生打包之后:

package获取已编译的代码并将其打包成可分发的格式,例如 JAR。
pre-integration-test 在执行集成测试之前执行所需的操作。这可能涉及诸如设置所需环境之类的事情。
integration-test 处理并在必要时将包部署到可以运行集成测试的环境中。
post-integration-test执行集成测试后执行所需的操作。这可能包括清理环境。
verify 运行任何检查以验证包是否有效并符合质量标准。
install 将包安装到本地存储库中,以用作本地其他项目的依赖项。

因此,通过调用,install您将确保始终执行集成测试。实际上,更短的调用将是

mvn clean verify

在这些情况下不太受欢迎但更有效。

于 2016-08-25T16:16:44.267 回答