我们正在使用maven-3.3.9
和maven-war-plugin来制作我的最后一场战争。我们在更改静态文件时遇到问题,因为浏览器正在使用缓存版本。
因此我们决定在引用那些静态文件后不使用查询字符串版本属性。我们的选择是生成静态文件目录,覆盖maven-war-plugin在Adding and Filtering External Web Resources文档中的状态,覆盖默认目标目录。
以下是我们如何做到的:
<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
指令一样,所以我得到了我的资源内容目录两次。我得到了我想要的目录的资源目录,而第二个目录内的所有目标也都是资源目录,作为它的sibbling。如何生成资源目录,而不是重复其内容?
我的最终输出如下:
|--- resources
|--- js
|--- css
|--- fonts
|--- js
|--- myoverridendir
|--- js
|--- css
|--- fonts
|--- js
答案 0 :(得分:0)
因为同一文件夹来自两个资源目录
src/main/webapp
原样warSourceDirectory
webResources
由于您只需要一份来自webResources
的副本,因此需要排除来自src/main/webapp
的副本。可以使用<warSourceExcludes>
标记完成。
例如,假设js
是src/main/webapp
文件夹中的一个此类文件夹。可以使用<warSourceExcludes>js/</warSourceExcludes>