2013-01-24 71 views
3

當我在項目上執行一個乾淨的&構建時,Maven會將所有資源複製到目標文件夾,但帶有創建時間戳,而不是src/main/resources文件夾中原始文件的時間戳。是否有可能以某種方式指示它保留原始時間戳?Maven資源插件:如何將資源複製到目標文件夾並保留時間戳?

導致爲什麼這對我們有問題的原因是我們正在開發的軟件在啓動時有數據庫遷移,我們希望保持它在開發人員機器上執行。但是由於時間戳的不斷變化,這會將不必要的資源重新加載到數據庫中。

+1

我還沒有嘗試過自己,但有一個[複製插件(http://evgeny-goldin.com/ wiki/Copy-maven-plugin#.3CskipIdentical.3E),可以根據更改的時間戳對某些文件進行一些控制。但我想這也會導致構建不完整。 – Masse

回答

0

我不認爲有可能使用Maven resources plugin的默認功能。

您可以在運行時更改文件的加載路徑嗎(可能是通過在每個環境中對其進行配置)?如果是這樣,那麼也許你可以使用ant with maven並使用ant's copy task其中有preservelastmodified屬性。

意圖是Maven的資源處理將像往常一樣繼續工作,但文件也會被複制到每個構建到運行時使用的單獨位置。

1

解決方案是使用ant的複製任務。 這是在2個步驟完成: 1)從文件,我們希望保留的日期(在這個例子中,我處理測試資源的正常處理exlude這同樣適用於構建資源):

<testResources> 
    <testResource> 
     <directory>src/test/resources</directory> 
     <excludes> 
      <exclude>**/some-files*/**</exclude> 
     </excludes> 
    </testResource> 
</testResources> 

2)第二步是將它們與Ant任務使用MAVE螞蟻插件複製:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
     <execution> 
      <phase>process-test-resources</phase> 
      <configuration> 
       <tasks> 
        <copy todir="${project.build.testOutputDirectory}" preservelastmodified="true"> 
         <fileset dir="src/test/resources"> 
          <include name="**/some-file*/**"/> 
         </fileset> 
        </copy>        
       </tasks> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
+0

我剛剛添加覆蓋=「真」的螞蟻,並使排除不必要的 –

相關問題