如何排除 maven war 插件生成的 jar?

2022-09-01 01:52:11

由于传递依赖关系,我的战争被xml-apis,xerces jars填充。我尝试按照maven-war-plugin的参考页面上的说明进行操作,但它不起作用。

<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>

我做错了什么?如果这很重要,我发现我正在使用的maven-war-plugin是2.1-alpha-1版本。


答案 1

您可以将这些依赖项标记为提供:

<dependency>
  <groupId>xerces</groupId>
  <artifactId>xerces</artifactId>
  <version>2.4.0</version>
  <scope>provided</scope>
</dependency>

这样,maven 会将它们添加到编译类路径中,但不会打包它们。假设它们存在于您的 servlet 容器中。

在“范围”下查看有关 maven 范围的更多信息

编辑如果要删除通过传递依赖项添加的类,可以将它们从依赖项中排除,如下所示:

<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>

(摘自此答案)

在此处查看更多内容


答案 2

我修复了它。

重新阅读参考文献时,我发现元素打包Excludees应该是warSourceExcludees


推荐