maven-replacer-plugin 静态资源版本号解决方案(css/js等)

2023-05-16

本文介绍如何使用 maven 的 com.google.code.maven-replacer-plugin 插件来自动添加版本号,防止浏览器缓存。

 

1.解决方案
解决问题:
    防止浏览器缓存,修改静态文件(js/css)后无效,需要强刷。

解决方案:
    使用 maven 的 com.google.code.maven-replacer-plugin 插件,
    在项目打包 package 时自动为静态文件追加 xxx.js?v=time 的后缀,
    从而解决浏览器修改后浏览器缓存问题,此插件只会在生成 war jar包源码时生效,不需要修改任何代码。

 


<properties>
    <!-- maven.build.timestamp 默认时间戳格式 -->
    <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <!-- 使用缓存 -->
                <useCache>true</useCache>
            </configuration>
            <executions>
                <!-- 在打包之前执行,打包后包含已经执行后的文件 -->
                <execution>
                    <id>prepare-war</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>exploded</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>com.google.code.maven-replacer-plugin</groupId>
            <artifactId>replacer</artifactId>
            <version>1.5.3</version>
            <executions>
                <!-- 打包前进行替换 -->
                <execution>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>replace</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- 自动识别到项目target文件夹 -->
                <basedir>${build.directory}</basedir>
                <!-- 替换的文件所在目录规则 -->
                <includes>
                    <include>**/*.html</include>
                </includes>
                <replacements>
                    <!-- 更改规则,在css/js文件末尾追加?v=时间戳,反斜杠表示字符转义 -->
                    <replacement>
                        <token>\.css}\"</token>
                        <value>.css?v=${maven.build.timestamp}}\"</value>
                    </replacement>
                    <replacement>
                        <token>\.css}\'</token>
                        <value>.css?v=${maven.build.timestamp}}\'</value>
                    </replacement>
                    <replacement>
                        <token>\.js}\"</token>
                        <value>.js?v=${maven.build.timestamp}}\"</value>
                    </replacement>
                    <replacement>
                        <token>\.js}\'</token>
                        <value>.js?v=${maven.build.timestamp}}\'</value>
                    </replacement>
                </replacements>
            </configuration>
        </plugin>
   </plugins>
</build>  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

maven-replacer-plugin 静态资源版本号解决方案(css/js等) 的相关文章

  • 我如何告诉 Maven 从自定义 Nexus 存储库获取最新版本的工件

    我有以下要求 我需要从自定义 Nexus 存储库而不是快照存储库下载最新版本的工件 请建议 Thanks 要获取任何工件的最新版本 只需省略
  • HTML:您可以隐藏/忽略浏览器查找中的文本元素 (CTRL+F)

    我有一个具有相当复杂的 UI 的 Web 应用程序 并且屏幕的一部分保留用于内容 如果可能的话 我想这样做 以便当用户使用浏览器的内置文本搜索 CTRL F 时 UI 中的任何文本都将被忽略 并且仅搜索实际内容 这可行吗 CSS 和 Jav
  • 如何制作复选按钮? (带有标签的隐藏复选框作为按钮:仅限 CSS)

    Using 方法1 创建可点击标签 https stackoverflow com a 6293626 1326147 用 CSS 隐藏复选框 https stackoverflow com a 18078908 1326147 and 使
  • 为什么有些网站在 iPad 上无法缩放?

    有谁知道为什么 iPad 缩放 你知道 你用两根手指放大文本 屏幕 在某些网站上不起作用 例如 脸书网 c3 arc nasa gov nex 我正在工作的网站 谷歌搜索没有显示任何内容 这让我认为这不是一个常见问题 预先感谢您的任何见解
  • 如何使用 iTextSharp 设置 PDF 段落或字体行高?

    如何使用 iTextSharp 更改 PDF 字体或段落的行高 排版中的行距称为行距 如果可以使用行间距 则可以使用 Paragraph Leading 或 Paragraph LeadingMultiplier 看http itextsh
  • 飞碟中的外部 CSS

    我想知道如何在 Flying Saucer 中包含外部 CSS 在此之前THB我检查了所有可用的链接StackOverflow但它们没有帮助 这就是为什么我自己做这个的原因 TestCSS xhtml重命名版本TestCSS html 所以
  • 防止文本环绕浮动图像

    我目前有一个向左浮动的图像 以及位于其右侧的一段文本 该文本块当前不是浮动的 它只是位于 HTML 中的图像之后 因此 当它变得更长时 它最终会踢到图像下方的左侧以继续 如何才能使文本块始终保持在图像的右侧 以便图像和文本的行为就像两个并排
  • 猫头鹰轮播,制作自定义导航

    所以我有一个包含三张图像的猫头鹰旋转木马 我还在左侧和右侧添加了自定义导航箭头 png 图像 然而 这些箭头目前是无用的 因为我找不到一种方法来真正让它们在我的猫头鹰旋转木马的图像之间切换 我无休止地寻找 找不到解决方案 有任何想法吗 您需
  • 状态代码 304(Jade、Node、Express)

    我在我的 jade 文件中链接 bootstrap 和 jquery link rel stylesheet href stylesheets bootstrap css and script src javascripts jquery
  • 在 IntelliJ IDE 中找不到 Maven 插件

    我的项目中有一个新错误 位于 pom xml 文件中 我该如何修复它 IntelliJ IDEA中出现如下错误 Plugin org springframework boot spring boot maven plugin not fou
  • CSS3 媒体查询放在哪里?

    我正在与自己进行一场哲学辩论 讨论将媒体查询放在样式表中的最佳位置 我正在尝试模块化地构建我的CSS 例如OOCSS或SMACSS等 鉴于这种情况 我看到两个选择 将所有媒体查询放在单独的样式表或主样式表的一部分中 将媒体查询置于其基本对应
  • 表单输入不会采用百分比填充

    如果使用像素填充 我的表单输入会正确显示 但使用左侧和右侧的百分比填充会破坏它 我不明白为什么 它可以在 Safari 中运行 但在 Firefox 3 5 3 OSX 中损坏 问题是 当我使用百分比填充时 填充全部中断 因此输入值没有很好
  • 我可以为CSS写一个循环吗

    我有一个场景 我得到像这样生成的 ID div class containerLength div div div div div div div div div 等等 有没有办法我可以编写一些CSS来通过循环来定位它们 也许像 new i
  • 某些表格后的分页符

    我的问题是 我有一个页面 其中包含几个要打印的 html 表格 有些表有很多行 有些则没有 我想要做的是将第一个和第二个表 大表 打印在单独的页面中 其余表 小表 每页打印两个 如何在我想要的位置放置分页符 我试过 但这会在每个表格后面添加
  • 如何获得浮动:右键垂直居中对齐

    我只是无法获得课程按钮align right垂直居中对齐 HTML div class panel footer span style width 100 class header footer item span div
  • 浮动标签和占位符重叠

    div class form group form default form spacing div
  • 为什么只读输入字段无效

    考虑以下 html
  • Bootstrap 3 水平滚动行网站设计

    我正在尝试使用 bootstrap 3 制作水平滚动网页 This http fiddle jshell net ravimallya 7kCTD 2 show 是我到目前为止所尝试过的 media min width 768px cont
  • 如何使用 javascript 将我的域名字母大写?

    假设我的域名是www hello com 如何使用 jQuery JavaScript 使浏览器的 URL 栏看起来像 www HELLO com 您无法更改浏览器地址栏中显示的内容 这是一项基本的安全功能 您可以使您的域名全部大写 并将页
  • 如何使用maven创建基于spring的可执行jar?

    我有一个基于 Maven 的 Spring WS 客户端项目 我想将其打包为单个 jar 在eclipse中 一切运行正常 当我尝试将其打包为可执行 jar 时 我收到 ClassNotFound 异常 因为 Spring jar 未包含在

随机推荐