从webapp / WEB-INF / lib中排除所有jar

时间:2011-05-10 14:17:08

标签: maven maven-war-plugin

我的WEB项目中的第三方jar位于/src/main/webapp/WEB-INF/lib/

我已经在 pom.xml 中提到了所有必需 JAR的依赖关系。 现在,由于依赖关系是在POM中定义的,JAR将自动打包在lib文件夹中。

  • 我想排除lib
  • 中的所有JAR
  • 在构建WAR时,应将依赖JAR打包在lib中

我无法从WEB-INF中删除LIB,因为它用于本地开发

这是我到目前为止所尝试的:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <packagingExcludes>META-INF/context.xml</packagingExcludes>
    <webResources>
      <resource>
        <directory>src/main/webapp/WEB-INF/lib</directory>
        <excludes>
          <exclude>**/**</exclude>
        </excludes>
      </resource>
    </webResources>
  </configuration>
</plugin>

任何想法?

3 个答案:

答案 0 :(得分:6)

它应该是&#34; packagingExcludes&#34;而不是&#34; warSourceExcludes&#34;:

<configuration>
    <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
    ....
</configuration>

来自http://maven.apache.org/plugins/maven-war-plugin/examples/skinny-wars.html

  

在版本2.1-alpha-1中,这被错误地命名为warSourceExcludes

答案 1 :(得分:2)

试试这个:

<configuration>
    <warSourceExcludes>WEB-INF/lib/*.jar</warSourceExcludes>
    ....
</configuration>

但是,我同意Jarrod的说法,将您的罐子手动存储在WEB-INF/lib中是不好的做法。之前我用过这个来避免那些罐子因为依赖包被打包后能够重新包装它。

答案 2 :(得分:1)

您的WEB-INF/lib目录中不应该包含任何内容。如果您正在使用Eclipse,您可以告诉它从pom.xml构建其项目,并且它将知道在~/.m2/repository中查找依赖项,Intellij IDEA也会这样做。将依赖项放在WEB-INF/lib类中会使使用Maven进行依赖项管理失败。当pom.xml中的依赖项与WEB-INF/lib

中的依赖项不同步时会发生什么情况