仅当所有模块都成功构建时,Maven才会部署多模块项目

时间:2013-04-18 14:10:56

标签: maven artifactory

我有一个包含多个模块的maven多模块项目。我想部署它们(mvn deploy),只要它们都传递了一个完整的mvn install(包括测试)。

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

有没有人对此有所了解?


编辑:我了解到使用Artifactory作为存储库管理器而maven-artifactory-plugin与您的maven设置一起将添加原子部署行为到mvn deploy命令。请参阅Artifactory文档中的Build Integration部分。

[披露 - 我与JFrog有联系。神器创造者。]

2 个答案:

答案 0 :(得分:4)

查看Maven部署插件的deployAtEnd参数:http://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html

答案 1 :(得分:3)

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

我知道的一个解决方案是Nexus Pro:http://www.sonatype.com/Products/Nexus-Professional/Features - 它允许您提升构建或将某些存储库定义为暂存。因此,只有经过验证的版本才会被提升使用。也许神器有类似的东西 - 我只是不知道。

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