5

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

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

有人对此有想法吗?


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

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

4

2 回答 2

5

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

于 2013-11-01T03:42:33.667 回答
3

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

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

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

于 2013-04-18T18:12:37.860 回答