Eclipse 从.war中排除maven依赖项的正确方法
我在Eclipse中有一个多模块Maven项目。它有一个jar模块“myapp core”和一堆.war模块。核心模块依赖于一些外部JAR,war模块依赖于核心 问题是,当我构建.war文件时,所有依赖项都被复制到所有WEB-INF/lib文件夹中,因此我们有重复项。理论上,解决这个问题的正确方法是给myappcore中的依赖项一个“提供”的范围。不幸的是,当我这样做时,所有的.war模块都会出现编译错误。所有可传递的依赖项都会被复制 如何设置它以排除战争中常见的依赖关系 (不幸的是,我不能一个接一个地排除所有可传递的工件。它们大约有50个,而且这是一个不断变化的列表。)您可以排除某些工件拉入的某些可传递依赖项,并允许其他依赖项保留,而不是“提供”。例如:Eclipse 从.war中排除maven依赖项的正确方法,eclipse,maven,war,Eclipse,Maven,War,我在Eclipse中有一个多模块Maven项目。它有一个jar模块“myapp core”和一堆.war模块。核心模块依赖于一些外部JAR,war模块依赖于核心 问题是,当我构建.war文件时,所有依赖项都被复制到所有WEB-INF/lib文件夹中,因此我们有重复项。理论上,解决这个问题的正确方法是给myappcore中的依赖项一个“提供”的范围。不幸的是,当我这样做时,所有的.war模块都会出现编译错误。所有可传递的依赖项都会被复制 如何设置它以排除战争中常见的依赖关系 (不幸的是,我不能一个
X -depends-> B1 -depends-> C1
Y -depends-> B2 -depends-> C2 -depends-> D1
然后设置pom,使X排除B1。然后你得到了最新的&最好的B和最新的C(假设B2是B1的更新版本,C2是C1的更新版本)。此外,您可以将D1声明为依赖项,或将其标记为“已提供”
有关更多示例,请参阅,以及您可以使用配置部分排除和包括工件的其他stackexchange Q&A
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<!--
Exclude JCL and LOG4J since all logging should go through SLF4J.
Note that we're excluding log4j-<version>.jar but keeping
log4j-over-slf4j-<version>.jar
-->
<packagingExcludes>
WEB-INF/lib/commons-logging-*.jar,
%regex[WEB-INF/lib/log4j-(?!over-slf4j).*.jar]
</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
...