我们正在将maven-3.3.9
与Maven-War-Plugin一起生成我的最后战争。由于浏览器正在使用缓存版本,因此我们在更改静态文件时遇到了问题。
因此,我们决定在引用这些静态文件后不使用查询字符串版本属性。我们的选择是生成我们的静态文件目录,以添加和过滤外部Web资源文档中的maven-war-plugin状态过度,覆盖默认目标目录。
。这是我们完成的方式:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<warSourceDirectory>src/main/webapp</warSourceDirectory>
<webResources>
<webResource>
<directory>src/main/webapp/WEB-INF/resources</directory>
<targetPath>WEB-INF/resources/${parsedVersion.majorVersion}${parsedVersion.minorVersion}${parsedVersion.incrementalVersion}${buildNumber}</targetPath>
<filtering>true</filtering>
</webResource>
</webResources>
</configuration>
</plugin>
我们还使用另一个插件来对项目版本进行解析和数字修订,但它们对这个问题并不重要。
问题在于,静态文件目录是正确创建的,如我们所期望的,但它的内容也以常规方式创建,就像我们不使用webResources
说明一样,因此我获得了两次资源内容DIR。我得到了我想要的dir的资源,第二个dir内部的所有dir也都在资源中,作为它的发光。我该如何生成资源目前正在执行的目的而不复制其内容?
我的最终输出是以下类似:
|--- resources
|--- js
|--- css
|--- fonts
|--- js
|--- myoverridendir
|--- js
|--- css
|--- fonts
|--- js
,因为同一文件夹来自两个资源目录
- 通过
src/main/webapp
,因为它是warSourceDirectory
- 它被指定为
webResources
中的资源
您只需要一个副本,即来自webResources
的副本,需要排除来自src/main/webapp
的副本。可以使用<warSourceExcludes>
标签完成。
例如,我们说js
是src/main/webapp
文件夹中的一个这样的文件夹。它可以使用<warSourceExcludes>js/</warSourceExcludes>