【发布时间】:2017-08-18 21:24:55
【问题描述】:
如果存储库中存在某个工件确实,我如何使构建失败? Maven Wagon 插件有一个“存在”的目标,但并非相反。
我的问题的原因如下。
我的 Maven 项目通过一个自动构建管道,该管道在发布阶段结束。在使用mvn versions:set -DremoveSnapshot 设置发布版本之后,此阶段通过mvn deploy -P release 执行自动发布。该阶段是手动触发的(因为并非每次推送都会导致发布)。
如果要上传的工件已经在存储库中,mvn deploy 将失败。但是这种失败会很晚才出现,在管道的最后阶段,而可以更早地检查存储库中的存在。
为了获得快速失败的行为,我想检查将要发布的工件是否没有已经上传到 Nexus。我想在管道的第一阶段执行此操作,它只执行mvn package -P releasable。 “可发布”配置文件最好让 Maven 在默认生命周期的“验证”阶段自动执行此检查。
【问题讨论】:
-
这最终意味着您在 poms 中的版本未正确更新为未正确维护导致在 Nexus 部署期间失败意味着您尝试部署的版本已经存在?跨度>
-
@khmarbaise 是的
-
好的那么现在的问题是:为什么您没有正确维护基于场景隐含的版本?
-
@khmarbaise 我们正在与许多团队一起开发许多组件(Maven 项目)。大约 100 名程序员中的一个可能会犯一个错误:我们都是人类。这个问题是关于快速失败的行为。
-
这不是重点。我们在这里谈论的是一个项目,它应该由您的 CI 流程正确处理,而不是手动处理..例如通过 Jenkins...您所谈论的阶段应该处理正确发布版本的设置,当然还有下一个开发版本也是如此......并且不需要手动完成任何事情......作为一个快速失败的选项,我可以考虑一个自我实现的maven-enforcer-rule......它在构建开始时检查是否发布版本(仅在发布版本的情况下)如果它已经存在并破坏构建..