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

2023-12-21

在我们的 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 http://maven.apache.org/plugins/maven-release-plugin/prepare-mojo.html“项目 A 的目标,默认情况下它会将标签创建为“tags/project_a-x.x”,这与我上面的标签命名方案不匹配。因此,我依赖于发布版本的人(即容易犯错的人)来发现这一点并将标签更改为“tags/project_a/x.x”。如何告诉发布插件默认使用正确的格式?

“准备”目标有一个“tag http://maven.apache.org/plugins/maven-release-plugin/prepare-mojo.html#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 中似乎也是错误的。

如何确保默认标签是正确的?


发布插件现在支持tagNameFormat 配置选项 https://maven.apache.org/maven-release/maven-release-plugin/prepare-mojo.html#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>

注意,为了保证在发布过程中发生插值,必须使用@{...}引用属性而不是${...}.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何自定义Maven发布插件的标签格式? 的相关文章

随机推荐