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

标签 java maven ear pom.xml multi-module

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

我有以下项目结构。

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

它们都应该生成耳朵来部署。

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

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

最佳答案

您似乎有两个不同的担忧。

  1. 模块 A、B 和 C 在 2 个项目中部分重复使用。
  2. 您希望通过一个耳朵项目管理 2 个耳朵项目(EAR 1 和 2)。

我想象A是一个jar(提供服务或公共(public)类),B和C是 war ,不是吗?

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

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

在您收集并共享信息或管理之前,请考虑不存在虚拟父项目。

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

然后,当您想要构建整体时,请在父级上使用 mvn package。当你要释放它时,只需在父级上执行 mvn release:perform 即可。

如果您想单独使用/分发它们(耳朵 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
\

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

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

在这两种情况下,如果您将 WTP 与 eclispse 一起使用,请务必小心:Multi Module Maven2 Project with WTP .

关于java - 是否可以将 Ear 模块定义为多模块项目中的父模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11825443/

相关文章:

maven - 如果存储库中存在较新版本的依赖项,如何使 Maven 构建失败?

websphere - 如何从命令行停止/启动特定的 WebSphere 部署的 EAR?

java - 如何从 maven-archetype-webapp 工件生成 Ear 文件?

java - 在同一个项目中使用 gradle war 和 ear 插件是否可能/明智?

java - LocalDate 获取上周星期六的日期

java - servlet 的线程安全问题

java - java.lang.String类型的JSON异常值连接无法转换为JSONArray

java - 如果不是整数,则仅返回小数。 JAVA

java - 我想使用spring boot和hibernate创建表,虽然没有报错,但是无法创建表,为什么?

maven - java.lang.NoClassDefFoundError : org/yaml