1

我们正在使用 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>
4

3 回答 3

2

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

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

于 2013-10-08T13:34:04.980 回答
1

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

于 2012-11-13T15:47:04.277 回答
0

要从 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 文件夹做出贡献,您的耳朵 pom 中是否有更多的依赖项?

于 2012-11-15T15:50:07.107 回答