使用com.google.code.maven-replacer-plugin插件为前端代码自动添加版本号
通过maven-replacer-plugin插件可以为打包的前端文件中所引用的JS、CSS文件添加版本号,从而在每次代码重新部署后可及时更新用户缓存。
配置过程如下:
配置日期输出格式,默认日期按照
yyyy-MM-ddTHH:mm:ss
格式输出,作为版本戳较为不美观<properties><maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format> </properties>
配置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>
配置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>
常见问题
- 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插件为前端代码自动添加版本号相关推荐
- Maven 的 Maven Compiler Plugin 插件
当前 Maven Compiler Plugin 这个插件的版本为 3.10.1 你可以使用最新的版本. 我们今天主要说一下这个插件中 --release 参数 这个插件的配置方法如下: <?x ...
- 关于maven的plugin插件问题(踩坑)
关于maven的plugin插件问题(踩坑) 今天几乎花了一整天的时间来弄插件的问题 特此来复盘一下,没想到不起眼的plugin竟然困扰了我一天 文章目录 关于maven的plugin插件问题(踩坑) ...
- babel 插件为react元素自动添加属性
原文链接: babel 插件为react元素自动添加属性 上一篇: clip-path 绘制css常见图形 制作有趣的动画 下一篇: js 生成器 协程 参考 https://www.imliyan. ...
- Maven版本管理-Maven Release Plugin插件
一.什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基 ...
- 关于Visual Studio Code里进行SAP UI5开发的代码自动完成功能
路径如下: 有朋友在我的群里问这个问题: vscode上写ui5代码好用吗?它的代码提示.自动填充也不太灵.我在ws上也碰到这种问题 要想在Visual Studio Code里自如地开发SAP UI ...
- pl sql developer中的CnPlugin插件,sql代码自动补全提示,批量添加单引号
一.安装 使用pl sql developer的版本7以上,下载CnPlugin插件,文件解压缩后,将里面的CnPlugin.dll和CnPlugin文件夹放到你的pl sql的安装路径中的PlugI ...
- 用Maven Archetype Plugin快速创建项目
还在用mvn archetype:create -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.ryanote -Dart ...
- 使用VS Code编写maxscript脚本(代码自动补全)
文章目录 1 VS Code安装 2 VS Code汉化 3 maxscript 插件安装 4 编写maxscript脚本 1 VS Code安装 官方下载地址:https://code.visual ...
- Maven构建生命周期和各种plugin插件
总揽生命周期(lifecycle) 一般构建项目时执行的最常用的命领是mvn clean install,如果是IDE就是点对应的按纽其实还是调的mvn命令,除非你使用的IDE内嵌的maven(不推荐 ...
- (转) maven 依赖com.google.code.kaptcha
https://blog.csdn.net/lancelet223/article/details/78941489 使用时的pom依赖 <dependency><groupId&g ...
最新文章
- linux uname 命令简介
- python学习笔记:(三)list(列表)常用的内置方法
- 使用Amanda ZRM备份远程MySQL数据库
- xshell连接虚拟机里的linux系统
- iOS中 openGL常用函数记录(部分)
- workbench 手动提交事务_mysql实现事务的提交和回滚实例
- 各种排序方法的时间复杂度、空间复杂度和稳定性统计表
- 图机器学习在度小满风控中的应用
- 苹果mac文档处理工具:microsoftword
- 【渝粤题库】广东开放大学 汉语基础 形成性考核
- oracle remote diagnostic agent,Oracle数据库收集、分析工具RDA(RemoteDiagnostic Agent)下载
- 嵌入式(embedded)与非嵌入式数据库
- java 整数除法(不用*和/以及%)
- Unity中模型的面数问题
- MetaMask钱包登录Ganache-cli内的账户,出现无法获取链 IC,您的 RPC URL 地址是正确的么?问题
- java毕业设计阿博图书馆管理系统(附源码、数据库)
- GXOI/GZOI2019 逼死强迫症 题解
- 安装指定版本的Mariadb数据库
- 用python把视频分解成图片
- 时间那点儿事儿 -- 时间戳,时区,冬令时,夏令时