Maven发布插件在发布标签下添加trunk文件夹以供发布:准备目标

时间:2012-07-03 15:50:16

标签: maven pom.xml maven-release-plugin

我的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。如何阻止它在trunk下添加RC

1 个答案:

答案 0 :(得分:5)

Brian,你可能是Maven不完整的release:rollback功能的受害者。查看我的question on StackOverflow及其答案。如果你的标签已经存在,Subversion(不是Maven)会认为你想要复制现有标签中的 。删除标签,它将工作 - 一次。再试一次,你会得到RC/trunk。再试一次,你会从Subversion得到一个错误。

在您尝试复制之前,解决方案是svn delete标记 - 我们在release:perform期间通过将几个插件绑定到deploy阶段,从Maven成功完成此操作。

基本上:

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

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