maven2:从WAR中排除目录

pls*_*pls 44 maven-2 maven maven-war-plugin

我想这个从我的WAR文件中排除整个目录($ {BASEDIR}/src目录/主/ web应用/ webscripts),但它失败了.怎么了?

这不起作用:

<configuration>
   <webResources>
      <resource>
       <directory>${basedir}/src/main/webapp/webscripts</directory>
       <excludes>
        <exclude>**/*.*</exclude>
       </excludes>
      </resource>
   </webResources>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这个也是:

<configuration>
   <webResources>
      <resource>
       <directory>${basedir}/src/main/webapp</directory>
       <excludes>
        <exclude>**/webscripts</exclude>
       </excludes>
      </resource>
   </webResources>
</configuration>
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

Sea*_*oyd 88

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

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

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warSourceExcludes>webscripts/**</warSourceExcludes>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

  • 只是另外一个补充,如果你想排除几个文件夹,在逗号之后添加它们,不要使用几个warSourceExcludes,它就行不通了 (19认同)

Tho*_*mas 31

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

warSourceExcludes:复制warSourceDirectory内容时要排除的逗号分隔的标记列表.

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

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

一个有效的语法示例:

<warSourceExcludes>**/${project.artifactId}/**</warSourceExcludes>
Run Code Online (Sandbox Code Playgroud)


igo*_*gor 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>
Run Code Online (Sandbox Code Playgroud)

  • 这是不正确的,误导了我一段时间.我使用的是2.1.1版本,但是packagingExcludes不起作用,而warSourceExcludes则不行.看起来在较新版本中,packagingExcludes是要使用的正确标记. (2认同)

小智 5

项目结构

为了删除源文件,我在 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>
Run Code Online (Sandbox Code Playgroud)