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} 替換為時間戳,每次發布版本的時候,也不用去清除瀏覽器的緩存了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM