【问题标题】:Maven : Remove duplicate jars from EARMaven:从 EAR 中删除重复的 jar
【发布时间】:2012-11-13 14:41:43
【问题描述】:

我们正在使用 maven 构建一个包含 WAR 的 EAR,JARS 在 EAR 的根目录和 WAR 的 lib 文件夹中都复制了,我阅读了有关从 WAR 中删除 jars 的瘦罐子,但我不希望这样,因为我希望将 WAR 保持为独立单元,
有没有办法反过来从 EAR 的根文件夹中删除 JAR?
附上 EAR POM

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <modules>
                    <webModule>
                        <groupId>com.csv.xyz</groupId>
                        <artifactId>web</artifactId>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>com.csv.xyz</groupId>
        <artifactId>web</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>war</type>
        <scope>compile</scope>
    </dependency>
</dependencies>

【问题讨论】:

  • 这有什么特殊原因吗?给你添麻烦了吗?
  • 唯一的原因,我想保留 WAR 独立实体,并且能够随时部署它

标签: maven war ear


【解决方案1】:

在您的情况下,“maven-skinny-war”解决方案没有任何缺点。也看看这个问题和我的回答:How to make maven place all jars common to wars inside the same EAR to EAR root?

通过这个解决方案,您将首先将 WAR 与它们自己的依赖项打包在一起,然后将 EAR 模块与瘦 WAR 打包在一起。所以一切都可以自行部署,没有任何东西是重复的。

【讨论】:

    【解决方案2】:

    由于类加载器架构,我认为这不是一个好主意。如果 JAR 是 WAR 的一部分,则它由 Web 应用程序类加载器定义,这可能会导致多个实例。如果它是 EAR 的一部分,它由企业应用程序类加载器定义,这是一个不同的类加载器。

    【讨论】:

      【解决方案3】:

      要从 EAR lib 文件夹中删除依赖项,请按照 EAR pom 中提供的方式声明依赖项,例如删除 commons-lang:

      <dependencies>  
          <dependency>
              <groupId>commons-lang</groupId>
              <artifactId>commons-lang</artifactId>
              <version>2.6</version>
              <scope>provided</scope>
          </dependency>    
      </dependencies>
      

      只要确保你有不需要依赖的 EJB 模块! webModules 也不对 EAR 的根 lib 文件夹做出贡献,您的 ear pom 中是否有更多依赖项?

      【讨论】:

      • 我没有 EJB,也没有除了上面 POM 中指定的 web 模块之外的任何其他依赖项!
      • mvn dependency:tree 的输出是什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 2016-10-16
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      相关资源
      最近更新 更多