15

在我们的 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 发布插件的“准备”目标时,默认情况下它会创建标签为“tags/project_a-xx”,这与我上面的标签命名方案不匹配。因此,我依赖于发布的人(即一个容易犯错的人)来发现这一点并将标签更改为“tags/project_a/xx”。我如何告诉发布插件默认使用正确的格式?

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

<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/xx-SNAPSHOT”,即它使用预发布版本号而不是发布版本号。将标签名称硬编码到 POM 中似乎也是错误的。

如何确保标签默认正确?

4

3 回答 3

17

发布插件现在支持tagNameFormat 配置选项,默认为@{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>
于 2012-12-14T21:28:33.457 回答
3

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

  • MRELEASE-150:无法在不影响版本的情况下向标签添加前缀(未计划)
  • MRELEASE-159:支持生成发布标签的模式(计划用于 2.2)
  • MRELEASE-259:为发布时使用的默认标签/标签提供配置设置(未计划)
于 2010-12-17T00:42:43.523 回答
1

如果你传入 releaseVersion,你可以这样做:

<tag>${project.artifactId}/${releaseVersion}</tag>
于 2011-03-01T14:01:57.033 回答