2012-03-08 78 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

相关问题