动态设定Jsp项目中引入js文件的版本
前端JS文件通常会使用CDN服务来加速访问,但在遇到文件内容更新时,就需要刷新CDN。
会出现硬编码的方式,每次都要手动修改版本,比较麻烦,且容易遗忘。
可以通过Maven打包自动注入版本来动态设置。
1、修改pom.xml文件
1.1 修改properties配置
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format> <static.version>${maven.build.timestamp}</static.version> </properties>
1.2 添加插件
<!-- 1、replacer插件:替换target目录里面的jsp占位符 -->
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.3</version>
<executions>
<execution>
<id>replace-static-version</id>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 基础目录:target -->
<basedir>${project.build.directory}</basedir>
<!-- 匹配target/项目名下所有jsp,包含WEB-INF/jsp/** -->
<includes>
<!-- 可以批评所有或指定jsp文件 -->
<include>**/*.jsp</include>
<include>**/index.jsp</include>
</includes>
<!-- 关闭正则,纯字符串匹配,不容易踩坑 -->
<regex>false</regex>
<replacements>
<replacement>
<token>@static.version@</token>
<value>${static.version}</value>
</replacement>
</replacements>
</configuration>
</plugin>
<!-- 2、war插件:打包时使用我们刚刚过滤完的 filtered-webapp -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
<configuration>
<webappDirectory>${project.build.directory}/filtered-webapp</webappDirectory>
</configuration>
</plugin>
如果想看具体替换了哪些文件,可以调整一下配置,在replacer插件中,使用以下配置进行替换,替换的文件会输出到webapp目录下:
<!-- 源目录:webapp源码目录 -->
<basedir>src/main/webapp</basedir>
<!-- 替换后的文件输出到这个目录,不改动src源码! -->
<outputDir>${project.build.directory}/filtered-webapp</outputDir>
2、修改jsp文件
<script src="/static/js/index.js?v=@static.version@"></script>
3、执行mvn clean package

通过以上日志,可以看到替换的文件数量。
执行后查看jar包中对应文件内的版本,会随着构建时间动态变化。✌️

浙公网安备 33010602011771号