2013-04-30 62 views
5

鑑於下面的示例多模塊項目:Maven的推出插件與SVN:外部組件和多模塊項目

  • AGGR/pom.xml中(版本1.0-SNAPSHOT)
  • AGGR /父/ POM .XML(版本2.0-SNAPSHOT)
  • AGGR /應用/ pom.xml中(版本3.0-SNAPSHOT)
  • AGGR/COMP1/pom.xml中(版本4.0-SNAPSHOT)

其中母體是削減任何其他pom和app的nt都有comp1的依賴。

通過釋放釋放:準備/執行只是正常工作只要匯聚文件夾具有svn庫中相同的結構(資料庫/主幹/匯聚/ parent.pom,...)。

現在,當我想用​​同樣的項目,但使用svn:外部對象,釋放的插件不工作,指出COMP1:

Can't release project due to non released dependencies : parent:pom:2.0-SNAPSHOT

的倉庫結構是事遂所願

  • 庫/ AGGR /中繼/ pom.xml的
  • 庫/父/中繼/ pom.xml的
  • 庫/應用/中繼/ POM .XML
  • 庫/ COMP1 /主幹/ pom.xml的

的匯聚文件夾使用的外部指向模塊幹線,因此,簽出的工作副本看起來就像上面。

爲什麼Maven處理基於外部模塊的模塊不同,有沒有辦法解決這個問題?

編輯:svn:externals項目的pom文件。與其他項目的pom-Files唯一的區別是scm標籤。在其他非外部項目中,只有聚合器具有scm標籤。

外部父的pom.xml

<groupId>small.test</groupId> 
<artifactId>parent</artifactId> 
<version>2.0-SNAPSHOT</version> 

<scm> 
    <connection>scm:svn:http://localhost/svn/small-test-ext/parent/trunk/</connection> 
    <developerConnection>scm:svn:http://localhost/svn/small-test-ext/parent/trunk/</developerConnection> 
    <url>http://localhost/svn/small-test-ext/parent/trunk/</url> 
</scm> 

<build> 
<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-release-plugin</artifactId> 
     <version>2.4.1</version> 
    </plugin> 
</plugins> 

外部AGGR-的pom.xml small.test 父 2.0-SNAPSHOT

<groupId>small.test</groupId> 
<artifactId>aggr</artifactId> 
<version>1.0-SNAPSHOT</version> 

<scm> 
    <connection>scm:svn:http://localhost/svn/small-test-ext/aggr/trunk/</connection> 
    <developerConnection>scm:svn:http://localhost/svn/small-test-ext/aggr/trunk/</developerConnection> 
    <url>http://localhost/svn/small-test-ext/aggr/trunk/</url> 
</scm> 

<modules> 
    <module>parent</module> 
    <module>comp1</module> 
    <module>comp2</module> 
    <module>app</module> 
</modules> 

外部應用程式的pom.xml

<parent> 
    <groupId>small.test</groupId> 
    <artifactId>parent</artifactId> 
    <version>2.0-SNAPSHOT</version> 
</parent> 
<groupId>small.test</groupId> 
<version>3.0-SNAPSHOT</version> 

<artifactId>app</artifactId> 
<packaging>jar</packaging> 

<scm> 
    <connection>scm:svn:http://localhost/svn/small-test-ext/app/trunk/</connection> 
    <developerConnection>scm:svn:http://localhost/svn/small-test-ext/app/trunk/</developerConnection> 
    <url>http://localhost/svn/small-test-ext/app/trunk/</url> 
</scm> 

<dependencies> 
    <dependency> 
    <groupId>small.test</groupId> 
    <artifactId>comp1</artifactId> 
    <version>4.0-SNAPSHOT</version> 
</dependency> 

感謝 康拉德

+0

你有沒有使用相同版本的所有模塊等主要問題。此外可以顯示您的pom文件?除此之外,爲什麼你使用外部創建一個多模塊結構,而不是沒有外部創建一個真正的? – khmarbaise 2013-04-30 11:50:07

+0

真實項目的模塊和父項正在幾個項目中使用。因此,我必須依賴外部,並且不能在整個項目中使用相同的版本。 – Konrd 2013-04-30 12:14:55

+0

這不是一個真正的原因,因爲如果你有一個多模塊版本,你可以單獨使用這些模塊。因此,如果您不將文件夾結構更改爲單個SVN樹而不是使用外部元素,則不會運行它。 – khmarbaise 2013-06-04 07:42:33

回答

2

在當前項目必須運行MVN:釋放爲每一個,因爲你在不同的SVN倉庫項目或模塊。如果你想運行只有一個MVN:釋放資源庫應該是這樣的:

svn_repository: branches/ 
      tags/ 
      trunk/ 
        parent 
        comp1 
        comp2 
        app 
        pom.xml 
+2

這正是我正在做的。謝謝!你知道是否存在一個自動調用release的插件:按照正確的順序爲所有子模塊做準備? – Konrd 2013-11-01 12:22:51