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

一、使用Maven自带的属性

  1. <properties>
  2.  
  3. <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
  4.  
  5. </properties>
  1. <!-- war打包插件, 设定war包名称带版本号 -->
  2. <plugin>
  3. <groupId>org.apache.maven.plugins</groupId>
  4. <artifactId>maven-war-plugin</artifactId>
  5. <version>2.6</version>
  6. <configuration>
  7. <warName>${project.artifactId}_${maven.build.timestamp}</warName>
  8. <webResources>
  9. <resource>
  10. <directory>src/main/webapp</directory>
  11. <includes>
  12. <include>*.*</include>
  13. <include>**/*.*</include>
  14. </includes>
  15. <filtering>true</filtering>
  16. </resource>
  17. </webResources>
  18. </configuration>
  19. </plugin>

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

二、使用插件

  1. <plugin>
  2. <groupId>org.codehaus.mojo</groupId>
  3. <artifactId>buildnumber-maven-plugin</artifactId>
  4. <version>1.4</version>
  5. <configuration>
  6. <timestampFormat>yyyyMMddHHmmss</timestampFormat>
  7. </configuration>
  8. <executions>
  9. <execution>
  10. <goals>
  11. <goal>create-timestamp</goal>
  12. </goals>
  13. </execution>
  14. </executions>
  15. <inherited>false</inherited>
  16. </plugin>

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

  1. <!-- war打包插件, 设定war包名称带版本号 -->
  2. <plugin>
  3. <groupId>org.apache.maven.plugins</groupId>
  4. <artifactId>maven-war-plugin</artifactId>
  5. <version>2.6</version>
  6. <configuration>
  7. <warName>${project.artifactId}_${timestamp}</warName>
  8. <webResources>
  9. <resource>
  10. <directory>src/main/webapp</directory>
  11. <includes>
  12. <include>*.*</include>
  13. <include>**/*.*</include>
  14. </includes>
  15. <filtering>true</filtering>
  16. </resource>
  17. </webResources>
  18. </configuration>
  19. </plugin>

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

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

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

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

页面中的引用

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

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

  1. <filtering>true</filtering>

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

Maven构建war项目添加版本号的更多相关文章

  1. 01 Maven构建的项目中,把.xml等配置文件添加到编译目录

    Maven构建的项目,默认只会把src/main/resources目录下的xml配置文件添加到编译目录. 如果需要把src/main/java目录下的xml配置文件也添加到编译目录,需要在pom.x ...

  2. Maven学习:Eclipse使用maven构建web项目(转)

    Maven学习:Eclipse使用maven构建web项目(转) 8.更改class路径:右键项目,Java Build Path -> Source 下面应该有4个文件夹.src/main/j ...

  3. maven构建java项目、web项目

    maven构建java项目.web项目 一.mvn构建web项目 1安装mvn(包括path) 2命令:mvn archetype:create -DgroupId=cn.edu.sdau.neat ...

  4. 使用Maven构建Android项目

    http://www.ikoding.com/build-android-project-with-maven/ 之前一直在做WEB前端项目,前段时间接手第一个Android项目,拿到代码之后,先试着 ...

  5. 利用Eclipse中的Maven构建Web项目(三)

    利用Eclipse中的Maven构建Web项目 1.将Maven Project转换成动态Web项目,鼠标右键项目,输入"Project Facets" 2.依据Dynamic W ...

  6. 利用Eclipse中的Maven构建Web项目报错(二)

    利用Eclipse中的Maven构建Web项目 1.错误描述 [INFO] Scanning for projects... [INFO] [INFO] Using the builder org.a ...

  7. 利用Eclipse中的Maven构建Web项目报错(一)

    利用Eclipse中的Maven构建Web项目 1.在进行上述操作时,pom.xml一直报错 <project xmlns="http://maven.apache.org/POM/4 ...

  8. JAVA Eclipse使用Maven构建web项目详解(SSM框架)

    tips: 启动项目后,welcome-file的链接即为测试用例 部署maven web项目 Eclipse使用Maven构建web项目详解 pom.xml添加webapp依赖: <depen ...

  9. maven构建web项目,用jetty测试的配置pom.xml

    maven构建web项目,用jetty测试的配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...

随机推荐

  1. Delphi_按字节比较两个文件

    1.界面 2.代码 procedure TForm1.btnSelectFile01Click(Sender: TObject); begin if OpenDialog1.Execute then ...

  2. JNI_C#

    1. 基本就是 通过 JAVA --> C/C++ --> C#的DLL 2. (1).自己写 JNI与 C#的DLL 通信 http://www.cnblogs.com/yinhaimi ...

  3. review12

    使用StringTokenizer对象分解字符串,和split()不同的是,StringTokenizer对象不使用正则表达式作为分隔标记. 当Fenix一个字符串并将字符串分解成可被独立使用的单词时 ...

  4. ajax_基础

    ajax  请求过程 1.准备发送请求 2.填写请求地址和数据 3.请请求到服务器 4.等待服务器处理数据. 5.接受服务器返回信息 --------------------------------- ...

  5. c++primer 第二章编程练习答案

    2.7.1 #include<iostream> int main() { using namespace std; ]; ]; cout << "input nam ...

  6. Two Cakes

    It's New Year's Eve soon, so Ivan decided it's high time he started setting the table. Ivan has boug ...

  7. 自定义Django Command

    转: django的command命令是要放在一个app的management/commands目录下.python2环境中,请确保management和management/commands目录内都 ...

  8. C# partial 说明(转)

    http://www.cnblogs.com/Echo_saq/archive/2012/11/19/2777058.html 1. 什么是局部类型? C# 2.0 引入了局部类型的概念.局部类型允许 ...

  9. 转载 VC轻松解析XML文件 - CMarkup类的使用方法

    VC轻松解析XML文件 - CMarkup类的使用方法http://www.cctry.com/thread-3866-1-1.html VC解析XML文件的工具有很多,CMarkup, tinyXM ...

  10. flask之Jinja2

    Jinja2 is a library found at http://jinja.pocoo.org/; you can use it to produce formatted text with ...