我正在构建一个项目,该项目由几个(有时是不相关的)模块和一些非标准的Java模块(使用ANT构建)组成。
每个maven模块在完成时部署到版本库。
如果构建在中间失败,我可能已经部署了一些模块,因此如果我尝试重建,则新的部署尝试将失败,因为已经部署了工件。
是否可以强制部署,或者在我再次部署之前删除已部署的工件?
答案 0 :(得分:12)
听起来中间件管理员已将远程仓库实例(Nexus或Artifactory或其他)配置为不允许进行工件重新部署,并且正如@khmarbaise所说,有充分的理由。 Nexus可以配置为允许特定角色的用户删除工件或具有工件删除权限。如果您的管理员以这种方式设置它,也许您可以请求删除权限并删除有问题的工件。或者,也许Nexus管理员会同意为您做这件事。
如果这些都不可能,那么可以尝试一些可能会在未来发生这种情况的事情:
release
插件,请首先在release:prepare命令行上执行干运行(-DdryRun=true
)。 Maven应该在不提交SCM的情况下报告任何错误。mvn install
。这会将工件安装到本地仓库,而不是远程。如果出现问题,您可以从本地仓库中取出工件并从头开始,重复直到完成构建。-Dmaven.deploy.skip=true
。这类似于建议#2,除了Maven实际上会加载&配置deploy plugin,它不会实际部署到远程仓库。一切正常后,删除skip属性。答案 1 :(得分:9)
答案 2 :(得分:3)
可能的选项已经增加;)
使用参数deployAtEnd(更多信息:here)。如果所有工件都已成功构建,则使用此参数仅部署工件。