Maven部署:即使工件已经存在,也会强制部署

Eld*_*sis 20 maven

我正在构建一个项目,它由几个(有时是不相关的)模块和一些非标准的java模块(用ANT构建)组成.

每个maven模块在完成时部署到版本库.

如果构建在中间失败,我可能已经部署了一些模块,因此如果我尝试重建,则新的部署尝试将失败,因为已经部署了工件.

在重新部署之前,是否可以强制部署或删除已部署的工件?

use*_*849 15

听起来中间件管理员已将远程仓库实例(Nexus或Artifactory或其他)配置为不允许进行工件重新部署,并且正如@khmarbaise所说,有充分的理由.Nexus可以配置为允许特定角色的用户删除工件或具有工件删除权限.如果您的管理员以这种方式设置它,也许您可​​以请求删除权限并删除有问题的工件.或者,也许Nexus管理员会同意为您执行此操作.

如果这些都不可能,那么可以尝试一些可能会在未来发生这种情况的事情:

  1. 如果您使用的是release插件,请先进行干运行(-DdryRun=true在release:prepare命令行上).Maven应该在不承诺SCM的情况下报告任何错误.
  2. 首先尝试mvn install在您的项目组上运行.这会将工件安装到本地仓库,而不是远程.如果出现问题,您可以从本地仓库中敲出工件并从头开始重复,直到您完成构建.
  3. 如果您正在运行多模块构建,则有一些命令行选项允许从特定项目向前恢复Maven构建.
  4. -Dmaven.deploy.skip=true在Maven命令行上定义.这类似于建议#2,除了Maven实际上会加载和配置部署插件,它不会实际部署到远程仓库.一切正常后,删除skip属性.


小智 10

我知道它可能会迟到,但在Nexus中有一个允许重新部署工件的选项.

在此输入图像描述

只需选择左侧的存储库,选择要更改策略的存储库,然后将其设置为允许重新部署.


Bla*_*Eye 5

可能的选项已增加;)

使用参数deployAtEnd(更多信息:此处)。使用此参数,仅当所有工件均已成功构建时才会部署工件。