【发布时间】:2013-06-22 01:50:02
【问题描述】:
我在http://maven.apache.org/plugins/maven-ear-plugin/examples/skinny-wars.html 偶然发现了maven 主题skinnyWars。如前所述,我可以使用此方法将选定的依赖项从 WAR 模块移动到 EAR 模块。它们将可用于 EAR 中的所有其他 WAR 模块。
因为我发现移动的依赖项必须在 EAR 模块中声明,并且必须包含在 META-INF\lib 目录中。 不适用于 EJB 模块,它们位于 EAR 模块的根目录中。
我的问题是如何从 WAR 中删除重复的 EJB 模块并将引用指向位于 EAR 文件中的那些?
现在的结构是这样的:
\-EAR
-ejb.jar
-META-INF\lib
-shared libraries
-web.war
-WEB-INF\lib
-ejb.jar
-other non-shared libraries
【问题讨论】:
-
我觉得这个问题可以帮到你:stackoverflow.com/questions/848947/…
-
你有没有找到一个干净的解决方案来解决这个问题?我目前遇到同样的问题,无法正确清理。
-
我发现的最 clean 解决方案是对 WEB-INF/lib 目录中的所有 jar 文件使用
<packagingExcludes>元素,然后使用 @987654327 包含所有必要的库@ -
我很快就尝试过了,但我发现 Manifest.MF 没有使用根目录中的 EJB pkg 名称进行更新。你有同样的问题吗?您是否还必须指示 war 打包程序手动添加类路径条目?
-
我找到的最干净的解决方案是在 WAR 的 POM 中声明的 EJB 依赖项上使用
provided 。
标签: maven ejb war ear skinny-war