首页 文章

maven2:从WAR中排除目录

提问于
浏览
42

我尝试this从我的WAR文件中排除整个目录($ / src / main / webapp / webscripts)但它失败了 . 怎么了?

这不起作用:

<configuration>
   <webResources>
      <resource>
       <directory>${basedir}/src/main/webapp/webscripts</directory>
       <excludes>
        <exclude>**/*.*</exclude>
       </excludes>
      </resource>
   </webResources>
</configuration>

这个也是:

<configuration>
   <webResources>
      <resource>
       <directory>${basedir}/src/main/webapp</directory>
       <excludes>
        <exclude>**/webscripts</exclude>
       </excludes>
      </resource>
   </webResources>
</configuration>

有人可以帮忙吗?

5 回答

  • 85

    您的两个解决方案都无济于事,因为它们会添加一个随后停用的其他资源 . 默认情况下会复制webapp源文件夹,而不使用资源机制 .

    停用其中一部分的机制是通过<warSourceExcludes>参数,如下所示:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1</version>
        <configuration>
            <warSourceExcludes>webscripts/**</warSourceExcludes>
        </configuration>
    </plugin>
    
  • 3

    warSourceExcludes 似乎没有被重命名为 packagingExcludes .

    warSourceExcludes:复制warSourceDirectory内容时要排除的逗号分隔的标记列表 . packagingExcludes:包装前要从WAR中排除的逗号分隔的标记列表 . 此选项可用于实现瘦的WAR用例 .

    有一个很大的区别:使用 packagingExcludes ,令牌完全被排除在最终的war文件之外 . 使用 warSourceExcludes 时,将war目录复制到war文件时会忽略标记 . 因此,如果令牌存在于 webappDirectory 中,则使用 warSourceExcludes 时将不会忽略它们,但使用 packagingExcludes 时将不会忽略它们 .

    一个有效的语法示例:

    <warSourceExcludes>**/${project.artifactId}/**</warSourceExcludes>
    
  • 6

    在版本2.1-alpha-1中,这被错误地命名为warSourceExcludes . 正确的参数是packagingExcludes

    用法示例(从WAR中排除WEB-INF / statics /文件夹):

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1.1</version>
        <configuration>
            <warName>searchservice-web</warName>
            <packagingExcludes>WEB-INF/statics/</packagingExcludes>
        </configuration>
    </plugin>
    
  • 1

    Project Structure

    为了删除我在maven中使用了以下配置的源文件

    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <packagingExcludes>
            eb-app/app/**,eb-app/node_modules/**,eb-app/public/**,eb-app/server/**,eb-app/tests/**,eb-app/tmp/**,eb-app/vendor/**,eb-app/*
          </packagingExcludes>
        </configuration>
      </plugin>
    
  • 31

    有一个场景,我必须排除两个文件夹,可以匹配 *scripts ,他们在资源文件夹中 . 第一个困惑是是否将排除值提供为 src/main/resources/*scriptsWEB-INF/classes/*scripts ,即编辑前结构或后编译结构 .

    提供 /** 以使整个目录从war文件中排除是非常重要的 . 就我而言, *scripts/** .

    这是有效的最终配置:

    <packagingExcludes>WEB-INF/classes/*scripts/**</packagingExcludes>
    

相关问题