2012-03-08 52 views
3

我看了這個問題上的SO - How to add WAR inside EAR with Maven爲什麼在生成ear文件時使用父文件?

在頂部的「joelittlejohn」投票的答案 -

「現在創建一個父模塊(帶POM),並添加 戰爭模塊和耳模塊確保你設置了戰爭和耳機模塊的父親 ,當你爲這個新父母運行mvn 包時,戰爭文件將由war 模塊構建,並且ear文件(包含戰爭)將會通過耳機 模塊構建「。

但爲什麼要創建一個父pom?爲什麼不僅僅用一個pom創建一個標準的maven項目呢?這個單獨的pom文件包含依賴項&模塊,然後從這個pom文件生成.ear文件?

喜歡的東西:

<plugin> 
    <artifactId>maven-ear-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <finalName>MyEarFile</finalName> 
     <version>5</version> 
     <generatedDescriptorLocation>${basedir}/src/main/application/META-INF</generatedDescriptorLocation> 
     <modules> 
      <webModule> 
       <groupId>com.your.group.id</groupId> 
       <artifactId>your-war-artifact</artifactId> 
       <uri>YouWarFile.war</uri> 
       <bundleFileName>YouWarFile.war</bundleFileName> 
       <contextRoot>/appname</contextRoot> 
      </webModule> 
     </modules> 
    </configuration> 

    <dependencies> 
    <dependency> 
    <groupId>com.your.group.id</groupId> 
    <artifactId>your-war-artifact</artifactId> 
    <version>your-war-version</version> 
    <type>war</type> 
    </dependency> 
    </dependencies> 

</plugin> 

回答

1

它在Maven的典型來爲您想建立的每個戰爭的模塊。然後.ear文件將包含多個戰爭。所以每個模塊都提供了一個很好的職責分離。家長團隊將它們全部包裝在一起。

+0

家長pom包裝在一起,孩子pom不包含在內? – 2012-03-08 19:53:47

+0

取決於您使用的功能。它可以讓你有一大堆適用於所有子模塊的配置。例如:依賴管理,資源過濾,構建任務的插件等。它還允許您一次釋放所有模塊。一個沒有子模塊的大型POM的缺點是,你的任何子模塊都不能單獨使用。所以如果你有一個你想在其他地方使用過的jar的項目(比如說你爲一個帶有一些接口的webservice定義了一個apis模塊),你可能希望其他項目引用該模塊。 – Michael 2012-03-08 19:56:31

+0

謝謝,在上面的例子中,當創建ear的所有pom定義都包含在子pom中時,是否使用父/子層次結構來創建ear文件是多餘的? – 2012-03-08 20:04:24

相關問題