为啥要“mvn install”战争项目?

Posted

技术标签:

【中文标题】为啥要“mvn install”战争项目?【英文标题】:Why 'mvn install' war projects?为什么要“mvn install”战争项目? 【发布时间】:2017-01-02 03:53:34 【问题描述】:

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

问题

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

【问题讨论】:

【参考方案1】:

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

但是,您可能希望始终运行集成测试(如果有)作为一种习惯。查看default Maven lifecycle,这些阶段发生在包装之后:

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

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

mvn clean verify

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

【讨论】:

以上是关于为啥要“mvn install”战争项目?的主要内容,如果未能解决你的问题,请参考以下文章

运行 mvn install 时构建兄弟项目

新建了一个maven项目,需要依赖其他项目,当mvn install的时候就出错

gradle 中 mvn update 和 mvn install 的等价物

maven添加本地包命令mvn install:install-file

78 单独执行项目的两个单元测试都没有问题, 但是 mvn install 执行单元测试其中一个报错

78 单独执行项目的两个单元测试都没有问题, 但是 mvn install 执行单元测试其中一个报错