【问题标题】:How to customise the tag format of the Maven release plugin?如何自定义 Maven 发布插件的标签格式?
【发布时间】:2011-05-26 21:17:29
【问题描述】:

在我们的 SVN 存储库中,我们存储这样的标签:

trunk
    project_a
    project_b
branches
    project_a
        branch_x
        branch_y
    project_b
tags
    project_a
        1.0
        1.1
    project_b
        1.0

当我在项目 A 上运行 Maven 发布插件的“prepare”目标时,默认情况下它会创建标签为“tags/project_a-x.x”,这与我上面的标签命名方案不匹配。因此,我依赖于发布的人(即易犯错误的人)来发现这一点并将标签更改为“tags/project_a/x.x”。如何告诉发布插件默认使用正确的格式?

“准备”目标有一个“tag”配置选项,声称可以这样做,但如果我将其设置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <tag>${project.artifactId}/${project.version}</tag>
    </configuration>
</plugin>

...那么创建的标签是“tags/project_a/x.x-SNAPSHOT”,即它使用预发布版本号而不是发布版本号。将标签名称硬编码到 POM 中似乎也是错误的。

如何确保标签默认正确?

【问题讨论】:

  • 见下面的my comment。此行为在 v2.4 中再次被打破。事实上,目前只有 v2.1 的发布插件可以正常工作。

标签: maven release default tagging maven-release-plugin


【解决方案1】:

在修复这些错误之一之前,这似乎是不可能的:

  • MRELEASE-150:无法在不影响版本的情况下为标签添加前缀(未计划)
  • MRELEASE-159:支持模式生成发布标签(预定2.2)
  • MRELEASE-259:为发布时使用的默认标签/标签提供配置设置(未计划)

【讨论】:

  • MRELEASE-159 在 2.2 中被标记为已修复,另外两张票被标记为重复。我不再使用 SVN,但我已将接受的答案更改为 Lyle's,其中记录了新的 tagNameFormat 选项。
【解决方案2】:

如果你传递的是 releaseVersion,你可以这样做:

<tag>${project.artifactId}/${releaseVersion}</tag>

【讨论】:

    【解决方案3】:

    发布插件现在支持tagNameFormatconfiguration option,默认为@{project.artifactId}-@{project.version}。在您的情况下,您可以执行以下操作:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
            <tagNameFormat>@{project.artifactId}/@{project.version}</tagNameFormat>
        </configuration>
    </plugin>
    

    【讨论】:

    • 请注意,v2.1 是此行为正常工作的最新版本。自该版本以来,代码库被破坏并使用-SNAPSHOT 版本。请参阅this bug 了解更多信息。
    • 请注意 @{project.version} 中的 at-sign 很重要。看起来相似的 ${project.version} 只是从 pom.xml 中获取版本。我没有$和@的意义?
    • 我刚刚使用了 v2.5.3 并使用以下配置仅使用项目版本正确标记了它:&lt;tagNameFormat&gt;@{project.version}&lt;/tagNameFormat&gt;
    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2016-09-28
    • 1970-01-01
    相关资源
    最近更新 更多