Maven 发布插件在发布标签下添加主干文件夹以进行发布:准备目标

Posted

技术标签:

【中文标题】Maven 发布插件在发布标签下添加主干文件夹以进行发布:准备目标【英文标题】:Maven release plugin adding trunk folder under release tag for release:prepare goal 【发布时间】:2012-07-03 15:50:15 【问题描述】:

我的 SCM 连接信息:

<scm>
    <connection>scm:svn:https://repo/project/trunk</connection>
    <developerConnection>scm:svn:https://repo/project/trunk</developerConnection>
</scm>

我的发布插件配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <tag>RC</tag>
        <autoVersionSubmodules>true</autoVersionSubmodules>
    </configuration>
</plugin>

现在当我运行mvn release:prepare 时,它不会在tags/RC 下提交我的标记版本,而是在tags/RC/trunk 下提交。如何阻止它在RC 下添加trunk

【问题讨论】:

你配置了标签吗?如果您在 SVN 中使用默认布局,则无需配置。 如果不配置标签,则由开发者在准备发布时指定标签。我们不希望那样。我们只是想要标记当前版本,这意味着它已准备好生产。 那是完全错误的。该标签默认由 artifactId 加上版本创建。发布插件会询问您,但您可以接受默认值,但如果您在命令行上给出 -B,它将自动执行操作,无需任何用户交互,而是使用默认值(版本增量等)。 这仍然给开发人员留下了错误的余地。如果 POM 中有标签名称,那么它不会询问您要标记什么。除了仍然没有回答我的问题的事实,实际上与我想要的相反。我不希望它默认为 artifactId 加上版本。我每次都想要相同的标签。 每次都使用相同的标签是没有意义的,因为如果你通过 Maven 发布这将创建一个新版本并且与之相关是没有意义的。如果你有一个已发布的工件,pom 中只有一个标签名称,通常你有一个 SNAPSHOT 版本,这意味着将使用 scm 区域中的主干。 【参考方案1】:

Brian,你可能是 Maven 不完整的release:rollback 功能的受害者。请参阅我的question on *** 及其答案。如果你的标签已经存在,Subversion(不是 Maven)会认为你想复制树干 inside 现有的标签。删除标签,它会工作 - 一次。再试一次,你会得到RC/trunk。再试一次,你会收到来自 Subversion 的错误。

解决方案是在您尝试复制到标签之前先将其复制到svn delete - 我们在release:perform 期间通过将几个插件绑定到deploy 阶段从 Maven 成功地做到了这一点。

基本上:

release:prepare 做它的事情,创建一个具有唯一名称的标签。 将org.codehaus.mojo:exec-maven-plugin:exec 绑定到deploy 阶段,使其在release:perform 期间运行。将其配置为调用svn delete &lt;path to RC tag&gt;。 将 maven-scm-plugin:branch 绑定到 deploy 以便使用 Maven 的 SCM 插件创建新标签。

这对我们有用,它还有一个额外的好处,就是它也为我们提供了独特的标签以供参考。最坏的情况,你可以忽略这些标签。

【讨论】:

我可以确认这是正确的答案(例如 SVN 中已经存在的发布标签)。

以上是关于Maven 发布插件在发布标签下添加主干文件夹以进行发布:准备目标的主要内容,如果未能解决你的问题,请参考以下文章

使用 Maven 从 Bamboo 发布时在 SVN 标记中创建的多余主干子文件夹

如何在 Maven 发布插件中设置 SCM 标签?

是否可以使用 Maven POM 文件为 Maven 发布插件配置 GIT Tag?

Maven 添加 Tomcat 插件

如何在 Maven 发布插件上禁用标签创建

Maven(四):写一个maven插件