我的maven
项目打包 a war
,它只被部署并且本身不依赖于其他项目(换句话说,它是最终可部署的)。
问题:
- 有什么理由
mvn install
在那个包上运行,除了mvn package
只把它放在localRepository
? - 如果没有任何东西依赖于它,为什么还要安装最终部署?
我的maven
项目打包 a war
,它只被部署并且本身不依赖于其他项目(换句话说,它是最终可部署的)。
问题:
mvn install
在那个包上运行,除了mvn package
只把它放在localRepository
?对于最终的可部署工件,确实可能没有理由调用install
阶段而不是package
阶段:您想要构建.war
文件并且确实不需要将其安装在本地存储库中。
但是,如果有的话,您可能希望始终运行集成测试作为一种习惯。查看默认的 Maven 生命周期,这些阶段发生在打包之后:
package
获取已编译的代码并将其打包成可分发的格式,例如 JAR。
pre-integration-test
在执行集成测试之前执行所需的操作。这可能涉及诸如设置所需环境之类的事情。
integration-test
处理并在必要时将包部署到可以运行集成测试的环境中。
post-integration-test
执行集成测试后执行所需的操作。这可能包括清理环境。
verify
运行任何检查以验证包是否有效并符合质量标准。
install
将包安装到本地存储库中,以用作本地其他项目的依赖项。
因此,通过调用,install
您将确保始终执行集成测试。实际上,更短的调用将是
mvn clean verify
在这些情况下不太受欢迎但更有效。