1. 程式人生 > >maven-replacer-plugin 靜態資源版本號解決方案(css/js等)

maven-replacer-plugin 靜態資源版本號解決方案(css/js等)

本文介紹如何使用 maven 的 com.google.code.maven-replacer-plugin 外掛來自動新增版本號,防止瀏覽器快取。

目錄

  • 1.解決方案
  • 2.原始檔案和最終生成效果
  • 3.pom.xml 中外掛新增
  • 4.html中 css/js 檔案引用規則
  • 5.結語

1.解決方案

解決問題:
    防止瀏覽器快取,修改靜態檔案(js/css)後無效,需要強刷。

解決方案:
    使用 maven 的 com.google.code.maven-replacer-plugin 外掛,
    在專案打包 package 時自動為靜態檔案追加 xxx.js?v=time 的字尾,
    從而解決瀏覽器修改後瀏覽器快取問題,此外掛只會在生成 war 包原始碼時生效,不需要修改任何程式碼。

2.原始檔案和最終生成效果

原始檔案:
<script src="${resource!}/js/xxx/xxx.js"></script>

打包後:
<script src="${resource!}/js/xxx/xxx.js?v=20180316082543"></script>

3.pom.xml 中外掛新增


<properties>
    <!-- maven.build.timestamp 預設時間戳格式 -->
    <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
</properties>

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
            <!-- 使用快取 -->
            <useCache>true</useCache>
        </configuration>
        <executions>
            <!-- 在打包之前執行,打包後包含已經執行後的檔案 -->
            <execution>
                <id>prepare-war</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>exploded</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>com.google.code.maven-replacer-plugin</groupId>
        <artifactId>replacer</artifactId>
        <version>1.5.3</version>
        <executions>
            <!-- 打包前進行替換 -->
            <execution>
                <phase>prepare-package</phase>
                <goals>
                    <goal>replace</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <!-- 自動識別到專案target資料夾 -->
            <basedir>${build.directory}</basedir>
            <!-- 替換的檔案所在目錄規則 -->
            <includes>
                <include>${build.finalName}/WEB-INF/views/*.html</include>
                <include>${build.finalName}/WEB-INF/views/**/*.html</include>
            </includes>
            <replacements>
                <!-- 更改規則,在css/js檔案末尾追加?v=時間戳,反斜槓表示字元轉義 -->
                <replacement>
                    <token>\.css\"</token>
                    <value>.css?v=${maven.build.timestamp}\"</value>
                </replacement>
                <replacement>
                    <token>\.css\'</token>
                    <value>.css?v=${maven.build.timestamp}\'</value>
                </replacement>
                <replacement>
                    <token>\.js\"</token>
                    <value>.js?v=${maven.build.timestamp}\"</value>
                </replacement>
                <replacement>
                    <token>\.js\'</token>
                    <value>.js?v=${maven.build.timestamp}\'</value>
                </replacement>
            </replacements>
        </configuration>
    </plugin>
</plugins> 

4.html中 css/js 檔案引用規則

檔案引用結尾處,必須是pom.xml檔案中新增的規則:

<script src="${resource!}/js/xxx/xxx.js" type="text/javascript"></script>

<link href="${resource!}/css/xxx/xxx.css" rel="stylesheet" type="text/css">

5.結語

到此本文就結束了,關注公眾號檢視更多推送!!!

關注我的公眾號