首页 > 解决方案 > 如何从war包中排除lib

问题描述

有人知道如何从打包到.war 中排除特定的库吗

我有以下依赖:

<dependency>
    <groupId>com.intel.mtwilson</groupId>
    <artifactId>mtwilson-client</artifactId>
    <version>2.0.3</version>
</dependency>

WEB-INF 中的 mtwilson-client-2.0.3.jar 然后包含一个库(javax servlet),这会导致应用服务器出现一些问题。有没有办法从包装中排除这个特定的库?我不能通过设置提供的标签来排除整个 jar。

先感谢您

标签: javamaven

解决方案


要在 WAR 中排除包含上述 jar 的 maven,您唯一需要做的就是将其标记为provided.

所以现在您的上述依赖项现在如下所示:

<dependency>
    <groupId>com.intel.mtwilson</groupId>
    <artifactId>mtwilson-client</artifactId>
    <version>2.0.3</version>
    <scope>provided</scope>
</dependency>

注意: provided不会将特定的 JAR 添加到 war 中,但会在构建后为最终的 war 添加一个类路径,如果您在部署时碰巧错过了 JAR,这可能会导致一些运行时错误。

您可以做的第二件事是使用<packagingExcludes>配置参数。

POM.xml 中的语法如下:

        <configuration>
          <packagingExcludes>WEB-INF/lib/mtwilson-client-2.0.3.jar</packagingExcludes>
        </configuration>

您可以访问有关排除特定 jar 的Apache Maven Doc 。


推荐阅读