我们使用maven来构建一个包含WAR的EAR,WAR被复制到EAR的根目录和WAR的lib文件夹中,我读到过一些关于从WAR中移除WAR的文章,但我不想这样,因为我想让WAR作为独立的单位。
有没有办法反过来从EAR的根文件夹中删除EAR呢?
附件是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>发布于 2013-10-08 21:34:05
在您的案例中,"maven-skinny-war“解决方案没有任何缺点。也可以看看这个问题和我的答案:How to make maven place all jars common to wars inside the same EAR to EAR root?
有了这个解决方案,你首先会得到带有自己依赖项的WARs,然后是一个带有skinny WARs的EAR模块。因此,所有内容都是可自行部署的,没有任何内容是重复的。
发布于 2012-11-13 23:47:04
我不认为这是一个好主意,因为类加载器架构。如果JAR是WAR的一部分,那么它是由web应用程序类加载器定义的,这可能会导致多个实例。如果它是EAR的一部分,那么它是由企业应用程序类加载器定义的,这是一个不同的类加载器。
发布于 2012-11-15 23:50:07
要从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的根库文件夹做出贡献,您的ear pom中是否有更多的依赖项?
https://stackoverflow.com/questions/13362719
复制相似问题