2012-12-10 40 views
1

我正在使用maven-release-plugin 2.3.2並能夠使用prepare and perform release。問題是這樣的。Maven發佈插件在svn中創建遞歸目錄

SVN回購:http://svnserver:8080/myrepo/test/projectA

Project A   
    | 
    branches/ 
    tags/ 
    trunk/ 

當我做一個mvn release:perform它第一次將創建標籤內這種結構/文件夾

branches/ 
tags/ 
    | 
    ProjectA_1.0.0 
     | 
     branches/ <structure from the parent branches/ folder> 
     tags/ 
     trunk/ 

當我做一個mvn release:perform第二時間,這是輸出

branches/ 
tags/ 
    | 
    ProjectA_1.0.0 
     | 
     branches/<structure from the parent branches/ folder> 
     tags/ 
     trunk/ 
    ProjectA_1.0.1 
     | 
     branches/<structure from the parent branches/ folder> 
     tags/ProjectA_1.0.0/branches/<structure from the parent branches/ folder> 
     tags/ProjectA_1.0.0/tags/ 
     tags/ProjectA_1.0.0/trunk 
     trunk/ 

等等......在整個1.0.1將裏面1.0.2被複制,直到我有一個遞歸的噩夢了:)

但如果我轉到我的<releases>庫中的Nexus,沒事了,我看到乾淨的目錄如

1.0.0 
1.0.1 
1.0.2 

其中有正確的工件。


我已經在命令行直接使用插件並使用M2發佈插件從Jenkins進行了測試。同樣的結果。這指向了某個地方錯誤配置的方向,而不是我如何或從哪裏調用它。


我在做什麼錯誤的插件或scm標籤?

+2

我認爲開發人員連接是錯誤的(不指向您的父pom.xml的位置)。或者你的發行版插件配置錯誤的branchBase/tagBase。 – wemu

+0

我正在研究'developerConnection'也是由@khmarbaise建議的,但我沒有明確使用標記庫,因爲我的SVN是相當標準的結構。 –

+0

@wemu ..它實際上是兩個設置。我最終也使用了'-DtagBase'。歡呼聲 –

回答

4

你必須定義你喜歡釋放和配置到您的pom.xml的供應鏈管理領域的項目的主幹:

這意味着定義:

<scm> 
    <connection>scm:svn:http://svnserver:8080/myrepo/test/projectA/trunk</connection> 
    <developerConnection>scm:svn:http://svnserver:8080/myrepo/test/projectA/trunk</developerConnection> 
</scm> 

如果你有一個多模塊版本,你必須定義,只在父,而不是在孩子。

+0

我們說我必須爲每個項目級別的POM都有一個'SCM'標籤。我不能在我的公司父母POM? –

+0

那麼,如果繼承父項目的項目實際上不在其下面,會發生什麼?最好的方法是每個項目都有明確的''部分。如果它是一個多模塊項目,你可以跳過它,但通常你應該擁有它。 – carlspring

+0

@PulakAgrawal scm信息的想法是識別每個項目,如果你只下載pom文件,你可以獲得你需要的所有信息(它在SVN中的位置等)。所以你必須在每個項目中都有scm塊。 – khmarbaise