Because of transitive dependencies, my wars are getting populated by xml-apis, xerces jars. I tried following the instructions on the reference page for maven-war-plugin but it is not working.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<packagingExcludes>WEB-INF/lib/xalan-2.6.0.jar,WEB-INF/lib/xercesImpl-2.6.2.jar,WEB-INF/lib/xml-apis-1.0.b2.jar,WEB-INF/lib/xmlParserAPIs-2.6.2.jar</packagingExcludes>
<webXml>${basedir}/src/main/webapp/WEB-INF/web.xml</webXml>
<warName>project1</warName>
<warSourceDirectory>src/main/webapp</warSourceDirectory>
</configuration>
</plugin>
What am I doing wrong ? If it matters, I discovered that the maven-war-plugin I'm using is at version 2.1-alpha-1
You can mark these dependencies as provided:
<dependency>
<groupId>xerces</groupId>
<artifactId>xerces</artifactId>
<version>2.4.0</version>
<scope>provided</scope>
</dependency>
This way the maven will add them to the compilation classpath, but will not package them. It is assumed they exist in your servlet container.
See more about maven scopes here under "scope"
Edit If you want to remove classes added via transitive dependencies you can exclude them from the dependency like this:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
本文解决了一个关于Maven WAR插件的问题,即如何正确地从WAR包中排除不需要的依赖项如XML-APIs和Xerces JARs。通过设置依赖项的作用域为provided或直接在依赖项中排除特定的子依赖项,可以有效地避免这些依赖被包含到最终的WAR文件中。
3027

被折叠的 条评论
为什么被折叠?



