2012-02-14 78 views
3

我正在嘗試製作一個多模塊項目。我有一個包含模型,控制器和服務類的JAR模塊,另外還有一個WAR模塊。我設法構建了該項目併產生了結果,但我不確定我的文件夾的結構。如何在Maven中組裝多模塊項目

目前我在同一個項目中創建了一個Maven模塊。

文件夾爲:

Parent 
Module1 
Module2 

他們都在同一水平上,是正確的?或者Module1和Module2應該在Parent文件夾中?是否有可能(或將自動發生)使生成的目標出現在父文件夾中而不是每個模塊中?或者也許沒有必要。

我正在使用IntelliJ 11 IDEA。

http://www.sonatype.com/books/mvnex-book/reference/multimodule-sect-intro.html

回答

4

,通常人們把模塊下的父(從邏輯上和在目錄結構)。但這不是一個法律。這只是一個建議。 現在你必須創建4個pom.xml文件: 一個在頂層,每個項目一個(父,模塊1和模塊2)。頂層POM應該提到其所有的3個子項目:

<modules> 
    <module>parent</module>  
    <module>module1</module> 
    <module>module2</module>   
</modules> 

如果模塊1和2取決於父母(即在同一水平)只是說:

<dependencies> 
    <dependency> 
     <groupId>com.yourcompany.yourproject</groupId> 
     <artifactId>parent</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </dependency> 
<dependencies> 
+0

所以在的IntelliJ你會怎麼做呢?你在父模塊中創建模塊嗎? – LuckyLuke 2012-02-14 20:08:46

0

您可以把所有模塊和父級在相同的層次結構中。 我發現的一個好辦法是爲父母提供一個文件夾,該文件夾將有一個pom。 在這種POM,你需要定義子模塊:

<modules> 
    <module>shared</module> 
    <module>common</module> 
    <module>dal</module> 
    <module>logic</module> 
</modules> 

如果在同一個文件夾層次中的所有模塊,那麼你需要做這樣的事情:

<module>../shared</module> 

在子模塊,你需要設置父版本:

<parent> 
    <artifactId>Aggregation</artifactId> 
    <groupId>com.mycomm</groupId> 
    <version>3.0.2-SNAPSHOT</version> 
</parent> 

要在同一個項目中的每個模塊之間的依賴關係:

<dependency> 
    <groupId>com.mycomm</groupId> 
    <artifactId>shared</artifactId> 
    <version>${project.version}</version> 
</dependency> 

如果您更改父母的pom,您還需要更改所有子模塊父母的pom。 你可以使用MVN釋放小插件 例:

mvn release:update-versions -DautoVersionSubmodules=true -DdevelopmentVersion=1.0.0.2-SNAPSHOT 
+0

Okey,但IntelliJ如何讓您將Maven模塊放入另一個Maven模塊中? – LuckyLuke 2012-02-15 07:11:40

+0

我不知道它是如何在IntelliJ中完成的。在eclipse中,我只需將所有模塊導入爲maven項目,並且「知道」要做什麼。我想在InteliJ中它會是類似的。 – 2012-02-15 12:50:35