maven2:不包括来自WAR的目录

我试图从我的WAR文件中排除整个目录($ {basedir} / 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> 

任何人都可以帮忙吗?

这两个解决scheme都无济于事,因为他们会添加一个额外的资源,然后停用。 webapp源文件夹是默认复制的,没有资源机制。

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

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

warSourceExcludes似乎并没有被改名为packagingExcludes

warSourceExcludes :复制warSourceDirectory内容时用逗号分隔的令牌列表。

packagingExcludes :在打包之前,用逗号分隔的要从WAR中排除的标记列表。 这个选项可以用来实现瘦的WAR用例。

有一个很大的区别:随着packagingExcludes ,令牌完全排除在最后的战争文件。 使用warSourceExcludes时,将战争目录复制到战争文件时,令牌被忽略。 因此,例如,如果令牌存在于webappDirectory中,则在使用warSourceExcludes时不会被忽略,但在使用packagingExcludes时会被忽略。

和一个工作语法的例子:

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

在版本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> 

有一个场景,我不得不排除两个文件夹可以匹配的*scripts ,他们在资源文件夹。 第一个困惑是是否提供作为src/main/resources/*scripts的排除值或作为WEB-INF/classes/*scripts ,即编译前或编译结构。

提供/**来获取从war文件中排除的整个目录非常重要。 在我的情况下, *scripts/**

这是最后的configuration工作:

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