2013-04-18 39 views
3

我有一个包含多个模块的maven多模块项目。我只想部署它们(mvn deploy),只要它们全部通过了mvn install(其中包括测试)。只有在所有模块都成功构建的情况下,Maven部署多模块项目

目前,我在该项目上运行了一个mvn install。如果所有模块都通过,我运行mvn deploy进行部署。我看到的问题是浪费时间两次调用mvn(即使我跳过第二次运行测试)。

有没有人有这个想法?


编辑:我已经了解到,使用Artifactory作为一个仓库管理和maven-artifactory-plugin与Maven的安装程序将在原子部署行为添加到mvn deploy命令。请参阅Artifactory文档中的Build Integration部分。

[披露 - 我与JFrog相关联。 Artifactory创建者]

+0

您是否尝试过使用** MVN部署:部署**呢? – khmarbaise

+0

这仍然需要我两次调用mvn。我想要一个解决方案(如果存在) –

+1

看到这个问题http://stackoverflow.com/questions/18192686/maven-multi-module-deploy-to-repository-only-after-successful-unit-tests – Dmitry

回答

3

这有点棘手。 Maven在执行构建生命周期时不是原子的。因此,一组破损的工件可能最终存放在一个存储库中。

我知道的一个解决方案是Nexus Pro:http://www.sonatype.com/Products/Nexus-Professional/Features - 它允许您促销构建或将某些回购定义为分期。所以只有经过验证的版本才能被使用。也许artifactory有类似的东西 - 我只是不知道。

如果该解决方案太贵,则可能需要创建清理构建或配置文件以删除已上载的工件。我的第一个猜测是编写一个Maven插件来使用代理远程API,或者Maven特性已经足够了。但由于部署意味着更新元数据XML文件,我不认为有一个删除 - 无法确定这一点。

相关问题