2012-03-03 108 views
0

我有一個多模塊項目這樣引用父項目:如何從孩子

  • GWT應用程序內
  • 模型
  • web應用(取決於GWT應用程序內和型號)

當我嘗試執行webapps中的任何目標,例如,啓動jetty,構建失敗,因爲maven找不到它的依賴關係(我沒有將模塊安裝到本地repo中)。有沒有一種可能的方法來引用父pom,以便當我在子模塊中運行任何目標時,它的所有依賴項都將被編譯(重新編譯)?

回答

1

您的POM文件的一個例子將是巨大的,但在多模塊項目,我一直在dependencyManagement標籤父POM聲明的依賴關係:

<dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>group-a</groupId> 
     <artifactId>artifact-a</artifactId> 
     <version>1.0</version> 
     </dependency> 
... 

在模塊POM我只是delcare的依賴,而不版本:

<dependencies> 
    <dependency> 
     <groupId>group-a</groupId> 
     <artifactId>artifact-a</artifactId> 
    </dependency> 
... 

這樣確保每個模塊使用相同的版本。

需要記住的是,maven中的模塊不會繼承父類的依賴關係。您必須聲明模塊本身中使用的依賴關係。

另一件事是,我相信當你在IDE之外運行(它搜索工作區的依賴關係)時,你需要在你的本地倉庫中安裝每個模塊。如果你沒有在父pom上執行,我不認爲maven會在多模塊項目中搜索未安裝的依賴關係。

0

如果你讓你的父POM只是常規設置像

<plugins> 
</plugins> 
<dependencies> 
</dependencies> 

然後,這些團體的任何自動繼承到子POM。兒童POM只需要在它的父節:

<parent> 
</parent> 

你甚至都不需要聲明相同的插件或依賴於這種方式,孩子聚甲醛。你只需要在子pom中列出插件或依賴關係,如果你使用或在父pom中,或者你想覆蓋父pom中的某些東西。我其實剛剛完成了本週的所有工作,並且讓我的構建現在很好地工作(小的孩子poms在父pom中有更多的東西,比如插件配置)。

我問了一個關於這個可能對你有幫助的問題: Maven - Parent Pom - Child Inheritance