如何自定义Maven发布插件的标记格式?

时间:2010-12-17 00:27:52

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

在我们的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

当我运行Maven发布插件" prepare"项目A上的目标,默认情况下它会将标记创建为" 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>

...然后创建的标签是&#34;标签/ project_a / x.x-SNAPSHOT&#34;,即它使用预发行版本号而不是发行版本号。将标签名称硬编码到POM中似乎也是错误的。

默认情况下,如何确保标签正确无误?

3 个答案:

答案 0 :(得分:11)

发布插件现在支持tagNameFormat configuration 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>

答案 1 :(得分:2)

看起来这是不可能的,直到修复了其中一个错误:

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

答案 2 :(得分:0)

如果您要传递releaseVersion,则可以执行此操作:

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