上午接到一个新的需求,项目的war包打包之后,放在了阿里的OSS上,供其他项目下载更新时使用,但是只有一个项目名,也就是pom的artifactId,预期的结果是要加上一个版本号,能区分出是什么时候打的包。

一、使用Maven自带的属性

<properties>

<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>

</properties>
<!-- war打包插件, 设定war包名称带版本号 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warName>${project.artifactId}_${maven.build.timestamp}</warName>
<webResources>
<resource>
<directory>src/main/webapp</directory>
<includes>
<include>*.*</include>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>

按照以上配置,版本号可以加上,年月日也是正确的,但是时分秒是对不上的,这是时区问题,maven取得是UTC ,如果想使用北京时间GMT+8 则需要插件支持

二、使用插件

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<configuration>
<timestampFormat>yyyyMMddHHmmss</timestampFormat>
</configuration>
<executions>
<execution>
<goals>
<goal>create-timestamp</goal>
</goals>
</execution>
</executions>
<inherited>false</inherited>
</plugin>

在需要使用版本号的地方直接使用${timestamp}

<!-- war打包插件, 设定war包名称带版本号 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warName>${project.artifactId}_${timestamp}</warName>
<webResources>
<resource>
<directory>src/main/webapp</directory>
<includes>
<include>*.*</include>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>

配置完成!打包符合要求。

三、扩展使用-静态资源文件版本控制

在 二 的基础上加自定义属性

<properties>
<project.build.version>${timestamp}</project.build.version>
</properties>

页面中的引用

*.[js|css|img]?v=${project.build.version}

注意:war包插件必须要先开启过滤

<filtering>true</filtering>

这样maven打包的时候,就会将${project.build.version} 替换为时间戳,每次发布版本的时候,也不用去清除浏览器的缓存了。

最新文章

  1. Linux下ps命令详解 Linux下ps命令的详细使用方法
  2. [django]利用xlwt实现文件下载功能
  3. ubuntu-14.04服务器版下搭建apache2+svn+svnmanager服务
  4. ACM 矩形的个数
  5. 突破GFW,使用node.js
  6. Hibernate日常应用的相关问题
  7. 微软职位内部推荐-Software Engineer II-News
  8. MongoDB启动配置等
  9. 对C++默认构造函数的理解
  10. [转载]CTO和技术总监区别
  11. 设计模式(一)工厂模式Factory(创建类型)
  12. Ajax+Ashx实现以及封装成控件的实现
  13. MySql Schema 优化
  14. ConcurrentHashMap 从Java7 到 Java8的改变
  15. vim编辑器的使用技巧
  16. wkhtmlpdf安装以及中文乱码
  17. Unity5 AssetBundle系列——基本流程
  18. java socket之多人聊天室Demo
  19. Nuxt.js + koa2 入门
  20. Jenkins与Docker的自动化CI/CD实战

热门文章

  1. JAVA设计模式初探之组合模式
  2. JavaScript的DOM操作(节点操作)
  3. php开发工程师面必问题
  4. HYSBZ - 2038经典莫队算法题
  5. python后端面试题
  6. TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute【转】
  7. 初学者的Node.js学习历程
  8. 02-THREE.JS 辅助线使用
  9. ASP.NET MVC架构模式
  10. Leetcode 970. Powerful Integers