是否可以将ear模块定义为多模块项目中的父模块?

时间:2012-08-06 09:16:02

标签: java maven ear pom.xml multi-module

是否可以在多模块项目中将ear模块定义为父模块?

我有以下项目结构。

  • 模块EAR-1是ModuleA和ModuleB的聚合
  • 模块EAR-2是ModuleA和ModuleC的聚合

他们都应该生成要部署的耳朵。

我不想为父模块设置虚拟模块。我想在现有项目中打包全局依赖项和配置。

哪个模块/ pom是放置所有这些一般信息的正确模块。这个pom将是我的父母pom。

1 个答案:

答案 0 :(得分:1)

您似乎有2个不同的问题。

  1. 模块A,B和C在2个项目中部分重复使用。
  2. 您希望通过一个项目管理2个耳朵项目(EAR 1和2)。
  3. 我想A是一个罐子(提供服务或普通类),B和C是战争,不是吗?

    如果项目真的与toger相关联,我的意思是你一起构建它们,你同时交付它们,当你推广一个版本时,你在所有项目中都这样做,我会推荐以下结构。我从来没有测试过,所以我不知道是否有缺点。

    /parent
    +--pom.xml
    |
    +--/moduleA
    |  +--pom.xml
    +--/moduleB
    |  +--pom.xml
    +--/moduleC
    |  +--pom.xml
    +--/app-ear1
    |  +--pom.xml
    +--/app-ear2
    |  +--pom.xml
    \    
    

    在收集和共享信息或管理之前,请考虑没有虚拟父项目。

    父亲将收集模块,显然,和dependencyManagement(为了简化依赖版本的管理)和pluginManagement。它还将包含团队,CI管理等。实际上,它将包含所有常见信息。

    然后,当你想构建整体时,在父级上使用mvn包。当你发布它时,juste执行mvn release:在parent上执行。

    如果你想分开使用/分配它们(耳朵1从一侧,耳朵2从另一侧),你可能没有相同的结构。

    /corporate
    +--pom.xml
    
    
    /moduleA
    +--pom.xml
    
    
    /parent-1
    +--pom.xml
    |
    +--/moduleB
    |  +--pom.xml
    |
    +--/app-ear1
    |  +--pom.xml
    \
    
    
    /parent-2
    +--pom.xml
    |
    +--/moduleC
    |  +--pom.xml
    |
    +--/app-ear2
    |  +--pom.xml
    \
    

    公司将由parent1和parent2扩展,并且它与案例1中的父级具有相同的角色,涉及依赖性管理,插件管理和CI等信息。 考虑一下你也可以在第一种情况下这样做。

    看看这里:Maven2: Best practice for Enterprise Project (EAR file)。您可以找到更多信息。

    在这两种情况下,如果您使用带有eclispse的WTP,请务必小心:Multi Module Maven2 Project with WTP