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>