maven skinnyWars 不会从 WEB-INF\lib\中删除 ejb jar

标签 maven ejb war ear skinny-war

我偶然发现了 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,它也会有其缺点。

关于maven skinnyWars 不会从 WEB-INF\lib\中删除 ejb jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17294391/

相关文章:

maven - spring boot 2.0 neo4j ogm 3.0兼容jetty版本

java - Spring java.lang.NoSuchMethodError : org. springframework.web.accept.PathExtensionContentNegotiationStrategy.getMediaTypes()Ljava/util/Map;

java - Spring MVC 3 JSF 2 与 Maven

java - 在 JavaDoc 中使用 Maven 属性

Hibernate session.close() 不返回连接到池

java - Jersey 2.22 UnsatisfiedDependencyException

java - 无法在 Restful Web 服务中使用 EJB

intellij-idea - Intellij IDEA 中内置的 war 文件在哪里?

resources - Gradle 用 WAR 插件替换资源文件

tomcat - 尝试使用 intellij 部署时服务器未连接