我正在将几个 J2EE 项目从 Ant 移植到 Maven2。所有这些项目都包含 1 个 EJB 和 1 个 Web 模块,并使用推荐的“瘦”EAR 打包方法。这意味着 EJB 和/或 Web 模块所依赖的 JAR 都只是放在 EAR 的根目录中。EJB 和 Web 模块在它们各自的清单中都有 Class-Path 条目以引用特定的 JAR,此外,Web 模块 Class-Path 也将引用 EJB jar。
我吓坏了(是不是太强了?:))发现 Maven 不能很好地支持这一点。我阅读了有关处理瘦 WAR 的官方页面,但这意味着我必须在 EAR pom 中复制 WAR 依赖项,更糟糕的是,还要复制传递依赖项。如果您必须在任何地方手动处理依赖项,那么采用 Maven 似乎毫无意义!
然后我开始谷歌搜索并找到了各种解决方法 - 显然,我不是第一个 (a) 想要做一个瘦 EAR 并且 (b) 不喜欢 Maven 建议的方法(这本身就是一种解决方法)的人。
我尝试了其中一些方法,但没有一个对我有用。我还发现了一些看起来像 Maven 错误的问题,例如 WAR 插件 'packagingExcludes' 指令仅排除直接依赖项,而不排除任何传递依赖项!不是很有信心鼓舞人心。我为这个特定的问题找到了一个 JIRA 问题,但它仍然是开放的。
然后我发现我的命令行 Maven 2.2.1 与我的 m2eclipse 嵌入式 Maven (Embedder v. 3.0) 做的事情不同。我们的开发人员肯定希望从 Eclipse 驱动 Maven,因此不能选择依赖最新的命令行版本。
所以,我的问题是:现在以及在可预见的未来,如果我们在 Eclipse 中进行所有开发,并且主要从事瘦 EAR 项目,是否值得迁移到 Maven?Maven 的未来是否有任何东西可以使其以更强大和集成的方式处理 EAR?