[英]maven2: excluding directory from WAR
我想这个从我的WAR文件中排除整个目录($ {BASEDIR} / src目录/主/ web应用/ 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>
有人可以帮忙吗?
您的两个解决方案都无济于事,因为它们会添加一个随后停用的其他资源。 默认情况下会复制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 ,令牌完全被排除在最终的war文件之外。 使用warSourceExcludes时 ,只有在将war目录复制到war文件时才会忽略标记。 因此,例如,如果令牌存在于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>
为了删除我在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>
有一个场景,我不得不排除两个文件夹,可以匹配*scripts
,他们在资源文件夹中。 第一个困惑是是否将排除值提供为src/main/resources/*scripts
或WEB-INF/classes/*scripts
,即编译前或编译后结构。
提供/**
以使整个目录从war文件中排除是非常重要的。 就我而言, *scripts/**
。
这是有效的最终配置:
<packagingExcludes>WEB-INF/classes/*scripts/**</packagingExcludes>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.