2010-12-17 74 views
11

在我们SVN回购,我们店的标签是这样的:如何自定义Maven发布插件的标签格式?

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

“准备”的目标具有声称这样做是“tag”配置选项,但如果我将它设置如下:

​​

...那么生成的标签是“标签/ project_a/xx-SNAPSHOT“,即它使用预发布版本号而不是发布版本号。将标签名称硬编码到POM中似乎也是错误的。

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

+0

参见[我的评论](http://stackoverflow.com/questions/4466714/how-to-customise-the-tag-format-of-the-下面的maven-release-plugin#comment21031508_13886493)。这个行为在v2.4中再次被破坏。事实上,release版本的v2.1是目前唯一正常工作的版本。 – 2013-02-20 10:39:52

回答

9

发布插件现在支持tagNameFormatconfiguration option,默认为@{project.artifactId}[email protected]{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

请注意,** v2.1 **是此行为正常工作的最新版本。自该版本以来,代码库被破坏,并且使用'-SNAPSHOT'版本。有关更多信息,请参阅[此错误](http://jira.codehaus.org/browse/MRELEASE-695)。 – 2013-02-20 10:39:02

+1

请注意@ {project.version}中的符号很重要。类似的$ {project.version}只是从pom.xml获取版本。我没有$和@的意义? – Josh 2013-07-19 16:50:38

2

看起来这是不可能的,直到这些缺陷之一是固定的:

  • MRELEASE-150:不能在不影响版本(未预定)
  • MRELEASE-159添加标签前缀:支持一生成释放标签的模式(预定为2.2)
  • MRELEASE-259:提供默认标签/标签的配置设置,以便在发布时使用(未预定)
+2

MRELEASE-159在2.2中被标记为固定,其他两张标签被标记为重复。我不再使用SVN,但我已将接受的答案更改为Lyle,它记录了新的tagNameFormat选项。 – 2012-12-17 09:00:52

0

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

<tag>${project.artifactId}/${releaseVersion}</tag> 
相关问题