2010-12-17 56 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>