7

今天在发布我们的项目时,由于我们的关系出现间歇性问题,因此 release:perform 命令在两者之间失败。release 命令只能上传一个 pom 文件到 nexus。

现在,nexus 问题已解决,我正在尝试发布,它失败了,因为 pom 文件已经存在,它不是快照版本,我们无权访问 nexus,因此我可以删除该文件并重新开始.

有什么方法可以传递一个参数,以便 release:perform 应该继续,如果文件已经存在并忽略它,但继续上传其余部分。

我一直在寻找这种类型的选项,但没有找到任何东西。

我的最后一个资源是再次开始发布,这将增加版本号,但想了解是否有任何其他方法不需要增加版本。

我正在使用 Maven 2.2.1

4

2 回答 2

10

以下是我过去的处理方式。该release:perform命令会从您的 SCM 提供商(例如 SVN)检查标签。这是在该target/checkout项目的目录中完成的 - 无论有什么都应该有已发布标签的精确副本,因此它在 pom 文件等中将具有正确的版本号。

如果你移动到那个目录(target/checkout在你开始发布的目录中),你可以简单地在mvn deploy那里做一个它应该编译和打包那个版本,然后把它上传到你的 Nexus 实例。

如果您没有该目录,您可以将作为阶段一部分创建的标签从您的 SCM 系统target/checkout检出到一个新目录并在那里运行。release:preparemvn deploy

由于您的 SCM 中的标签已经创建,唯一剩下的就是编译、打包和部署发布,这正是mvn deploy应该做的。

如果您在调用 期间为构建提供了其他参数(例如,用于激活配置文件),则在mvn release:perform运行时也必须提供这些参数mvn deploy

使用这种方法,您的版本号不必更改,它可以保持不变,因为您只是上传已经标记为mvn release:prepare.

于 2013-03-21T14:31:12.433 回答
0

我的建议是让您向管理员请求删除旧的工件。您可以通过签出并简单地从标签中重新部署代码

mvn deploy

或回滚您的版本:

mvn release:rollback

并像往常一样重新做。

如果大小不匹配,则必须从远程存储库中删除旧工件。发布存储库不允许重新部署工件,除非这已在服务器端显式打开。

此外,@nwinkler 的回答也很好。

于 2013-03-21T14:36:41.900 回答