我偶然发现了 maven 主题 skinnyWarshttp://maven.apache.org/plugins/maven-ear-plugin/examples/skinny-wars.html .如前所述,我可以使用此方法将选定的依赖项从 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 

请您参考如下方法:

我已经回答了一个类似的问题:How to make maven place all jars common to wars inside the same EAR to EAR root?

不幸的是,这似乎不适用于 ejb 模块。正如您已经提到的,它们会被重复。

您还可以使用的一件事是 maven-war-plugin 的配置:

            <plugin> 
                <groupId>org.apache.maven.plugins</groupId> 
                <artifactId>maven-war-plugin</artifactId> 
                <version>2.4</version> 
                <configuration> 
                    <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes> 
                </configuration> 
            </plugin> 

这将彻底清除 WAR 的 lib 文件夹中的所有内容,但如果您必须在没有周围 EAR 的单独机器上另外部署 WAR,它也会有其缺点。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!