zoukankan      html  css  js  c++  java
  • Maven构建war项目添加版本号

      上午接到一个新的需求,项目的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} 替换为时间戳,每次发布版本的时候,也不用去清除浏览器的缓存了。

  • 相关阅读:
    Attach Volume 操作(Part II)
    Attach Volume 操作(Part I)
    Create Volume 操作(Part III)
    Create Volume 操作(Part II)
    Linux 内核Coding Style整理
    内核工具 – Sparse 简介
    IP101A芯片默认物理地址(PHY Adress)确定
    嵌入式设备上的 Linux 系统开发
    嵌入式Linux开发系列之一: 走进嵌入式Linux的世界
    嵌入式 Linux 应用:概述
  • 原文地址:https://www.cnblogs.com/geekdc/p/9317463.html
Copyright © 2011-2022 走看看