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

And*_*wan 12 tagging default release maven 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
Run Code Online (Sandbox Code Playgroud)

当我在项目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>
Run Code Online (Sandbox Code Playgroud)

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

默认情况下,如何确保标记正确?

Lyl*_*yle 12

release插件现在支持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>
Run Code Online (Sandbox Code Playgroud)

  • 请注意 @{project.version} 中的 at 符号很重要。看起来类似的 ${project.version} 只是从 pom.xml 获取版本。我不明白$和@的意义? (2认同)