Maven:从EAR中删除重复的瓶子

我们使用maven来构建一个包含WAR的EAR,JARS被复制到EAR的根目录和WAR的lib文件夹中,我读到了关于从WAR中删除jar的瘦骨j瓶,但我不想这样做,因为我想保留它战争作为独立的单位,
有没有办法做到这一点,并从EAR的根文件夹中删除JARs?
附上的是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>

在你的情况下,“maven-skinny-war”soloution没有任何缺点。 也看看这个问题和我的回答:如何让maven的地方所有的罐子都在同一个EAR里面打到EAR根?

有了这个解决方案,您将首先获得与其自己的依赖关系打包的WAR,然后是一个带有瘦WAR的EAR模块。 所以一切都可以自行部署,而且没有任何重复。


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


要从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文件夹,你有更多的依赖在你的耳朵吗?

链接地址: http://www.djcxy.com/p/82663.html

上一篇: Maven : Remove duplicate jars from EAR

下一篇: Maven skinny war with warpath