我有一个包含多个模块的maven多模块项目。我想部署它们(mvn deploy
),只要它们都传递了一个完整的mvn install
(包括测试)。
目前,我在项目上运行mvn install
。如果所有模块都通过,我运行mvn deploy
来进行部署。我看到的问题是浪费时间调用mvn
两次(即使我在第二次运行时跳过测试)。
有没有人对此有所了解?
编辑:我了解到使用Artifactory作为存储库管理器而maven-artifactory-plugin与您的maven设置一起将添加原子部署行为到mvn deploy
命令。请参阅Artifactory文档中的Build Integration部分。
[披露 - 我与JFrog有联系。神器创造者。]
答案 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文件,我不认为有删除 - 也不确定。