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