Maven 只有在所有模块构建成功的情况下才部署多模块项目

Eld*_*sis 5 artifactory maven

我有一个包含多个模块的 maven 多模块项目。我想部署它们 ( mvn deploy) 只有当它们都通过一个完整的mvn install(包括测试)。

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

有没有人对此有想法?


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

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

Jay*_*Zhu 5

看一下deployAtEndMaven Deployment插件的参数:http : //maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html


wem*_*emu 3

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

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

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