2017-04-20 46 views
1

我們使用maven-3.3.9和maven-war-plugin來生成我的最終戰爭。我們在更改靜態文件時遇到問題,因爲瀏覽器正在使用緩存版本。maven-war-plugin將覆蓋目錄複製到最終制品

因此,我們決定在引用這些靜態文件後不使用查詢字符串版本屬性。我們的選擇是生成我們的靜態文件目錄覆蓋Adding and Filtering External Web Resources文檔中的maven-war-plugin聲明的方式,部分覆蓋默認目標目錄

下面是我們如何做到了:

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>3.0.0</version> 
    <configuration> 
     <warSourceDirectory>src/main/webapp</warSourceDirectory> 
     <webResources> 
      <webResource> 
       <directory>src/main/webapp/WEB-INF/resources</directory> 
       <targetPath>WEB-INF/resources/${parsedVersion.majorVersion}${parsedVersion.minorVersion}${parsedVersion.incrementalVersion}${buildNumber}</targetPath> 
       <filtering>true</filtering> 
      </webResource> 
     </webResources> 
    </configuration> 
</plugin> 

我們還使用其他的插件來獲得分析和數量也修改該項目的版本,但他們沒有對這個問題很重要。

問題是靜態文件目錄是按照我們的預期正確創建的,但是它的內容也是以常規方式創建的,就像我們沒有使用webResources指令一樣,所以我得到我的資源內容目錄兩次。我得到的資源目錄與我想要的目錄和這個第二個目錄中的所有目錄也是在資源目錄中作爲它的兄弟姐妹。我該如何生成資源目錄,而不是複製它的內容?

我的最終輸出是類似下面的東西:

|--- resources 
    |--- js 
    |--- css 
    |--- fonts 
    |--- js 
    |--- myoverridendir 
     |--- js 
     |--- css 
     |--- fonts 
     |--- js 

回答

0

因爲同一個文件夾是由兩個資源目錄

  1. 未來通過src/main/webapp,因爲它是warSourceDirectory
  2. 它被指定爲資源在webResources

由於您只需要一個副本,來自webResources的副本,來自src/main/webapp的副本需要排除。可以使用<warSourceExcludes>標籤完成。

例如,讓我們說jssrc/main/webapp文件夾中的一個這樣的文件夾。它可以排除使用<warSourceExcludes>js/</warSourceExcludes>