2016-03-07 245 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解析为\用户{用户名}