上午接到一个新的需求,项目的war包打包之后,放在了阿里的OSS上,供其他项目下载更新时使用,但是只有一个项目名,也就是pom的artifactId,预期的结果是要加上一个版本号,能区分出是什么时候打的包。
一、使用Maven自带的属性
yyyy-MM-dd HH:mm:ss
org.apache.maven.plugins maven-war-plugin 2.6 ${project.artifactId}_${maven.build.timestamp} src/main/webapp *.* **/*.* true
按照以上配置,版本号可以加上,年月日也是正确的,但是时分秒是对不上的,这是时区问题,maven取得是UTC ,如果想使用北京时间GMT+8 则需要插件支持
二、使用插件
org.codehaus.mojo buildnumber-maven-plugin 1.4 yyyyMMddHHmmss create-timestamp false
在需要使用版本号的地方直接使用${timestamp}
org.apache.maven.plugins maven-war-plugin 2.6 ${project.artifactId}_${timestamp} src/main/webapp *.* **/*.* true
配置完成!打包符合要求。
三、扩展使用-静态资源文件版本控制
在 二 的基础上加自定义属性
${timestamp}
页面中的引用
*.[js|css|img]?v=${project.build.version}
注意:war包插件必须要先开启过滤
true
这样maven打包的时候,就会将${project.build.version} 替换为时间戳,每次发布版本的时候,也不用去清除浏览器的缓存了。