2017-03-06 96 views
0

我有一個multimodule(module1,module2,module3)項目,它有一個聚合器pom來構建所有模塊。在多模塊項目失敗時執行maven版本

現在的反應堆建造順序是

     module1 
        module2 
        module3 

而且模塊2對模塊1和單詞數的依賴性,對模塊2的依賴,我們佔依賴我使用$ {} project.version指定模塊1版在module2 pom中,類似地,我在模塊3 pom中使用$ {project.version}來引用module2.Now快照作業成功執行,但是當我嘗試釋放所有使用聚合器pom的模塊時(這是父pom所有的模塊)構建失敗,說它不能釋放項目,因爲沒有發佈的依賴關係。有沒有辦法解決這個問題?

我正在使用Maven 3.0.4 maven-release-plugin:2.0-beta-8 for the project。 另外,module2需要使用module1的最新版本,module3和module2也是如此。並且有必要將它們全部釋放在一起,因爲我希望模塊只有在所有模塊都成功構建時才能發佈。

parent pom 

    <project> 
    <groupid>com.mycompany</groupid> 
    <artifactid>parent</artifactid> 
    <version>1.0.0</version> 
    <modules> 
      <module>module1</module> 
      <module>module2</module> 
      <module>module3</module> 
     </modules> 






    .. 


    </project> 


    module1 pom 

    <project> 
    <parent> 
    <groupid>com.mycompany</groupid> 
    <artifactid>parent</artifactid> 
    <version>1.0.0</version> 
    <relativePath>../pom.xml</relativePath> 
    </parent> 

    <groupid>com.mycompany</groupid> 
    <artifactid>module2</artifactid> 




    <dependencies> 
     .. 
     .. 

    </dependencies> 


    module2 pom 


    <project> 
    <parent> 
    <groupid>com.mycompany</groupid> 
    <artifactid>parent</artifactid> 
    <version>1.0.0</version> 
    <relativePath>../pom.xml</relativePath> 
    </parent> 

    <groupid>com.mycompany</groupid> 
    <artifactid>module2</artifactid> 




    <dependencies> 
     <dependency> 
     <groupid>com.mycompany</groupid> 
     <artifactid>module1</artifactid> 
     <version>${project.version}</version> 
     </dependency> 
     .. 
     .. 
     .. 
    </dependencies> 

    .. 


    </project> 
+0

您正在使用Maven和發佈插件的古老版本。在進行故障排除之前,我會盡可能更新鞋子。 – user944849

回答

0

檢查事項

1)確保同一母公司下的任何依賴由$ {} project.version

2)請指定確保每個模塊沒有顯式聲明它自己的版本但只能指定一個父級,而父級又會設置版本。

3)確保每個項目都沒有顯式聲明一個groupId,它應該來自父級。

4)確保沒有SNAPSHOT依賴項。 SNAPSHOT應該在所有模塊中發生的唯一位置在父pom中。

5)確保你所有的poms都有一個包裝聲明,父母應該是pom。

+0

嗨@Essex男孩,我確信所有上述事情都已到位。在檢查錯誤時,它特別指的是module2的pom,我指的是module1,使用$ {project.version} – Optimus

+0

@Optimus會分享你的poms的相關位。 –

+0

更新了我的問題 – Optimus