2016-03-07 113 views
1

我想複製「.jenkins」或「Temp」目錄中的文件。Maven,本地目錄的相對路徑

<artifactId>maven-resources-plugin</artifactId> 
    <version>2.7</version> 
    <executions>   
     <execution> 
     <id>copy-resource-one</id> 
     <phase>install</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>C:\Users\user\.jenkins</outputDirectory> 
        <resources> 
         <resource> 
          <directory>${basedir}/src/main/resources</directory> 
          <includes> 
           <include>htmlTemplate.html</include> 
           <include>Chart.js</include> 
          </includes> 
         </resource> 
        </resources> 
      </configuration>       
     </execution> 
    </executions> 

這就是我的pom.xml現在的樣子。它在我的本地機器上爲我工作,但它不適用於其他用戶。

這就是我想要的:

<outputDirectory> relative path to Temp </outPutDirectory> 

問題:我怎樣才能確保該文件在「臨時」或「.jenkins」文件夾中總是被複制?有沒有什麼變數?

+0

請張貼聯代碼;不是圖像 – fge

+0

你硬編碼的路徑,這絕對不是最好的做法,並可能是什麼使其無法在其他機器上工作 –

+0

我知道它是硬編碼。我想獲得一個相對於「臨時」的路徑,我不知道如何。請幫忙! – Lino556

回答

1

在Maven中,您可以使用Java properties as Maven properties進行構建。

Maven公開了來自java.lang.System的所有屬性。任何你可以從System.getProperty()檢索您可以在Maven的屬性引用

所以,你的情況,你可以有以下幾種:

<outputDirectory>${java.io.tmpdir}</outputDirectory> 

和輸出目錄將指向基於用戶臨時目錄主機操作系統。例如,在Windows 7將是

C:\Users\<user_Id>\AppData\Local\Temp 

對於Java屬性的完整列表,請official documentation,從中:

java.io.tmpdir:默認臨時文件路徑

您可能也有興趣user.home

user.home:用戶的主目錄

所以你可能想指向${user.home}\.jenkins

1

正如上面的評論所說,使用硬編碼路徑是一個非常糟糕的解決方案。

一個解決方案應該是在/目標文件夾中創建一個文件夾.jenkins:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>generate-sources</id> 
     <phase>generate-sources</phase> 
     <configuration> 
     <tasks> 
      <mkdir dir="${project.build.directory}/.jenkins"/> 
     </tasks> 
     </configuration> 
     <goals> 
     <goal>run</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

,並使用這個.jenkins文件夾作爲一個輸出文件夾:

<configuration> 
    <outputDirectory>${project.build.directory}/.jenkins</outputDirectory> 
    ... 
</configuration> 

它將工作在所有構建機器(開發人員筆記本電腦或服務器)。

1

除了建議的答案之外,還可以使用HOMEPATH系統變量,該變量在Windows系統上默認設置。

<outputDirectory>${HOMEPATH}/.jenkins</outputDirectory> 

HOMEPATH解析爲\用戶{用戶名}