packagingExcludes不起作用

时间:2016-06-01 07:30:01

标签: java maven

我正在开发一个maven项目,我需要从war文件中排除依赖项。以下是我的问题的详细信息。

我有一个项目A,其war包装取决于

<dependency>
        <groupId>com.myCompany</groupId>
        <artifactId>artifactB</artifactId>
        <version>0.0.1-SNAPSHOT</version>
</dependency>

我希望这个项目不会出现在最终的war中。我不能用

<scope>provided</scope>

因为我需要artifactB的传递依赖。我试图在包装阶段使用以下指令排除artifactB

 <packagingExcludes>WEB-INF/lib/artifactB.jar</packagingExcludes>

但是当我运行mvn package时,我会在jar内找到war。我做错了什么?

2 个答案:

答案 0 :(得分:0)

试试这个。

<plugin>
   <artifactId>maven-war-plugin</artifactId>
   <version>2.6</version>
   <configuration>
      <warName>your-war-name</warName>
      <webResources>
         <resource>
            <!-- this is relative to the pom.xml directory -->
            <directory>${basedir}/src/main/webapp/WEB-INF/lib</directory>
            <excludes>
               <exclude>artifactB*.jar</exclude>
            </excludes>
         </resource>
      </webResources>
   </configuration>
</plugin>

答案 1 :(得分:0)

我通过以下方式解决了我的问题:

<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
    <warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
    <packagingExcludes>WEB-INF/lib/artifactB*</packagingExcludes>
</configuration>

而且我还注意到我只会在内置战争的WEB-INF / lib中看到这一点,而不是在瞬态战争目录中(包括被排除的jar,即使调试说它们被排除在外,这当时非常混乱)看这个问题)。