Maven,本地目录的相对路径

时间:2016-03-07 10:43:16

标签: java maven jenkins pom.xml maven-resources-plugin

我想复制“.jenkins”或“Temp”目录中的文件。

<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>

问题:如何确保始终将文件复制到“temp”或“.jenkins”文件夹中?那有什么变数吗?

3 个答案:

答案 0 :(得分:3)

在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 :(得分:2)

正如上面的评论中所说,使用硬编码路径是一个非常糟糕的解决方案。

一种解决方案应该是在/ target文件夹中创建一个.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>

它适用于所有构建计算机(开发人员笔记本电脑或服务器)。

答案 2 :(得分:2)

除了建议的答案之外,您还可以使用HOMEPATH系统变量,默认情况下在Windows系统上设置。

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

HOMEPATH解析为\ Users {username}