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

Java 是否可以将ear模块定义为多模块项目中的父模块?,java,maven,ear,pom.xml,multi-module,Java,Maven,Ear,Pom.xml,Multi Module,是否可以将ear模块定义为多模块项目中的父模块 我有以下项目结构 /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 \ 模块EAR-1

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

我有以下项目结构

/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
\
  • 模块EAR-1是模块A和模块B的集合
  • 模块EAR-2是模块A和模块EC的集合
它们都应该生成要部署的耳朵

我不希望父模块有一个虚拟模块。我希望将全局依赖项和配置打包到现有项目中


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

看来您有两个不同的关注点

  • 模块A、B和C在2个项目中部分重复使用
  • 您希望通过一个ear项目管理两个ear项目(ear 1和ear 2)
  • 我想象A是一个jar(提供服务或公共类),B和C是战争,不是吗

    如果项目真的链接在一起,我的意思是你一起构建它们,同时交付它们,当你推广一个版本时,你在所有项目上都这样做,我建议采用以下结构。我从未测试过,所以我不知道是否有缺点

    /parent
    +--pom.xml
    |
    +--/moduleA
    |  +--pom.xml
    +--/moduleB
    |  +--pom.xml
    +--/moduleC
    |  +--pom.xml
    +--/app-ear1
    |  +--pom.xml
    +--/app-ear2
    |  +--pom.xml
    \    
    
    在您收集和共享信息或管理之前,请考虑不存在虚拟父项目

    显然,父模块将收集模块、dependencyManagement(以简化对依赖项版本的管理)和pluginManagement。它还将包含团队、CI管理等。实际上,它将包含所有通用信息

    然后,当您想要构建整体时,请在父级上使用mvn包。当您要释放它时,只需执行mvn release:performon parent

    如果您想单独使用/分发它们(ear 1从一侧,ear 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
    \
    
    Corporate将由parent1和parent2扩展,在案例1中,它在依赖关系管理、插件管理和CI等信息方面的角色将与parent1相同。 考虑到你在第一种情况下也会这样做。

    请看这里:。你可以找到更多的信息


    在这两种情况下,如果将WTP与eLispse一起使用,请务必小心。

    您似乎有两种不同的关注点

  • 模块A、B和C在2个项目中部分重复使用
  • 您希望通过一个ear项目管理两个ear项目(ear 1和ear 2)
  • 我想象A是一个jar(提供服务或公共类),B和C是战争,不是吗

    如果项目真的链接在一起,我的意思是你一起构建它们,同时交付它们,当你推广一个版本时,你在所有项目上都这样做,我建议采用以下结构。我从未测试过,所以我不知道是否有缺点

    /parent
    +--pom.xml
    |
    +--/moduleA
    |  +--pom.xml
    +--/moduleB
    |  +--pom.xml
    +--/moduleC
    |  +--pom.xml
    +--/app-ear1
    |  +--pom.xml
    +--/app-ear2
    |  +--pom.xml
    \    
    
    在您收集和共享信息或管理之前,请考虑不存在虚拟父项目

    显然,父模块将收集模块、dependencyManagement(以简化对依赖项版本的管理)和pluginManagement。它还将包含团队、CI管理等。实际上,它将包含所有通用信息

    然后,当您想要构建整体时,请在父级上使用mvn包。当您要释放它时,只需执行mvn release:performon parent

    如果您想单独使用/分发它们(ear 1从一侧,ear 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
    \
    
    Corporate将由parent1和parent2扩展,在案例1中,它在依赖关系管理、插件管理和CI等信息方面的角色将与parent1相同。 考虑到你在第一种情况下也会这样做。

    请看这里:。你可以找到更多的信息


    在这两种情况下,如果将WTP与eLispse一起使用,请务必小心。

    当您说聚合时,您的意思是EAR1和EAR2使用模块A和B?他们的生命周期有联系吗?@Jean-RémyRevy EAR1(Ear2也是)是一个空项目。这个EAR模块的目的只是生成一个EAR。模块A是基本模块,它提供一些基本功能,如登录处理、异常处理,模块B依赖于模块A。当你说聚合时,你的意思是EAR1和EAR2使用模块A和B?他们的生命周期有联系吗?@Jean-RémyRevy EAR1(Ear2也是)是一个空项目。这个EAR模块的目的只是生成一个EAR。模块A是基本模块,提供一些基本功能,如登录处理、异常处理,模块B依赖于模块A。我希望khmarbaise、Pascal Thivent和raghuram会同意;)我希望khmarbaise、Pascal Thivent和raghuram会同意;)