通过maven-replacer-plugin插件可以为打包的前端文件中所引用的JS、CSS文件添加版本号,从而在每次代码重新部署后可及时更新用户缓存。
配置过程如下:

  1. 配置日期输出格式,默认日期按照yyyy-MM-ddTHH:mm:ss格式输出,作为版本戳较为不美观

    <properties><maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
    </properties>
  2. 配置maven-war-plugin

    • phase选择与下方maven-replacer-plugin相同的prepare-package阶段,即此部分为打包前执行
    • goal选择exploded,即不生成war包,仅获得解压后的文件内容
    • configuration中设置useCache为true,即使用已解压文件进行打包
    • version设置为2.4,实测2.1.1和2.2版本均会报
      Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no-args constructor错误
    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.4</version><configuration><!-- 使用缓存 --><useCache>true</useCache></configuration><executions><!-- 在打包之前执行,打包后包含已经执行后的文件 --><execution><id>prepare-war</id><phase>prepare-package</phase><goals><goal>exploded</goal></goals></execution></executions>
    </plugin>
  3. 配置maven-replacer-plugin插件

    • basedir配置所要替换文件的所在目录,${build.directory}即为项目的target目录
    • includes中可设置要查找的文件类型,**/*.html即表示所有目录及子目录下的.html后缀文件
    • 默认状态下替换的token使用正则表达式进行匹配,会将匹配到的内容替换为value中设置的内容
    <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><basedir>${build.directory}</basedir><includes><include>**/*.html</include></includes><replacements><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>
  4. 常见问题

    • Replacement run on 0 files.未找到需替换文件,路径有误,或phase设置错误
    • 文件内容未替换,useCache未设置,在package阶段再次执行maven-war-plugin时新文件将已替换内容的文件覆盖了
    • Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no-args constructor错误,版本设置有误

参考资料:
1记录com.google.code.maven-replacer-plugin找不到文件
2Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no-args constructor

使用com.google.code.maven-replacer-plugin插件为前端代码自动添加版本号相关推荐

  1. Maven 的 Maven Compiler Plugin 插件

    当前 Maven Compiler Plugin 这个插件的版本为 3.10.1 你可以使用最新的版本. 我们今天主要说一下这个插件中 --release 参数 这个插件的配置方法如下: <?x ...

  2. 关于maven的plugin插件问题(踩坑)

    关于maven的plugin插件问题(踩坑) 今天几乎花了一整天的时间来弄插件的问题 特此来复盘一下,没想到不起眼的plugin竟然困扰了我一天 文章目录 关于maven的plugin插件问题(踩坑) ...

  3. babel 插件为react元素自动添加属性

    原文链接: babel 插件为react元素自动添加属性 上一篇: clip-path 绘制css常见图形 制作有趣的动画 下一篇: js 生成器 协程 参考 https://www.imliyan. ...

  4. Maven版本管理-Maven Release Plugin插件

    一.什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基 ...

  5. 关于Visual Studio Code里进行SAP UI5开发的代码自动完成功能

    路径如下: 有朋友在我的群里问这个问题: vscode上写ui5代码好用吗?它的代码提示.自动填充也不太灵.我在ws上也碰到这种问题 要想在Visual Studio Code里自如地开发SAP UI ...

  6. pl sql developer中的CnPlugin插件,sql代码自动补全提示,批量添加单引号

    一.安装 使用pl sql developer的版本7以上,下载CnPlugin插件,文件解压缩后,将里面的CnPlugin.dll和CnPlugin文件夹放到你的pl sql的安装路径中的PlugI ...

  7. 用Maven Archetype Plugin快速创建项目

    还在用mvn archetype:create -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.ryanote -Dart ...

  8. 使用VS Code编写maxscript脚本(代码自动补全)

    文章目录 1 VS Code安装 2 VS Code汉化 3 maxscript 插件安装 4 编写maxscript脚本 1 VS Code安装 官方下载地址:https://code.visual ...

  9. Maven构建生命周期和各种plugin插件

    总揽生命周期(lifecycle) 一般构建项目时执行的最常用的命领是mvn clean install,如果是IDE就是点对应的按纽其实还是调的mvn命令,除非你使用的IDE内嵌的maven(不推荐 ...

  10. (转) maven 依赖com.google.code.kaptcha

    https://blog.csdn.net/lancelet223/article/details/78941489 使用时的pom依赖 <dependency><groupId&g ...

最新文章

  1. linux uname 命令简介
  2. python学习笔记:(三)list(列表)常用的内置方法
  3. 使用Amanda ZRM备份远程MySQL数据库
  4. xshell连接虚拟机里的linux系统
  5. iOS中 openGL常用函数记录(部分)
  6. workbench 手动提交事务_mysql实现事务的提交和回滚实例
  7. 各种排序方法的时间复杂度、空间复杂度和稳定性统计表
  8. 图机器学习在度小满风控中的应用
  9. 苹果mac文档处理工具:microsoftword
  10. 【渝粤题库】广东开放大学 汉语基础 形成性考核
  11. oracle remote diagnostic agent,Oracle数据库收集、分析工具RDA(RemoteDiagnostic Agent)下载
  12. 嵌入式(embedded)与非嵌入式数据库
  13. java 整数除法(不用*和/以及%)
  14. Unity中模型的面数问题
  15. MetaMask钱包登录Ganache-cli内的账户,出现无法获取链 IC,您的 RPC URL 地址是正确的么?问题
  16. java毕业设计阿博图书馆管理系统(附源码、数据库)
  17. GXOI/GZOI2019 逼死强迫症 题解
  18. 安装指定版本的Mariadb数据库
  19. 用python把视频分解成图片
  20. 时间那点儿事儿 -- 时间戳,时区,冬令时,夏令时

热门文章

  1. 用Andriod studio学习制作APP
  2. 梦幻109鸿蒙量星太难杀,梦幻西游:维摩诘杀怪最少攻略,20分钟轻松做完!
  3. 手机连接不上电脑的移动热点?
  4. 软考系统集成项目管理工程师模拟题
  5. MySQL基础 - 简单查询
  6. JavaScript网页编程
  7. 微信 css area,微信小程序--手写一个地区选择器(多级联动)
  8. 技术帖:如何把mobi文件转化成pdf
  9. 用插件MAVEN-SUREFIRE-REPORT-PLUGIN生成HTML格式测试报告
  10. vmsd文件+服务器,VMWARE ESX中利用SnapShot(快照)文件恢复虚拟机数据