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

lsmd5eda  于 2023-05-28  发布在  Maven
关注(0)|答案(3)|浏览(196)

在我们的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”。我如何告诉发布插件默认使用正确的格式?
“prepare”目标有一个“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中似乎也是错误的。
如何确保标签在默认情况下是正确的?

qzwqbdag

qzwqbdag1#

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

请注意,为了确保在发布期间进行插值,必须使用@{...}而不是${...}来引用属性。

qlckcl4x

qlckcl4x2#

看起来这是不可能的,直到其中一个bug被修复:

  • MRELEASE-150:无法在不影响版本 * 的情况下向标记添加前缀(未计划)*
  • MRELEASE-159:支持模式来生成发布标签 (计划在2.2中使用)
  • MRELEASE-259:提供默认标记/标签的配置设置,以便在发布 (未计划) 时使用
6jjcrrmo

6jjcrrmo3#

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

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

相关问题