2

我想复制“.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”文件夹中?有什么变量吗?

4

3 回答 3

4

在 Maven 中,您可以将Java 属性用作构建的 Maven 属性。

Maven 公开所有属性java.lang.System。您可以从System.getProperty()您那里检索到的任何内容都可以在 Maven 属性中引用

因此,在您的情况下,您可以拥有以下内容:

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

并且输出目录将指向基于主机操作系统的用户临时目录。例如,在 Windows 7 中,它将是

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

有关 Java 属性的完整列表,请查看官方文档,其中:

java.io.tmpdir:默认临时文件路径

您可能还对以下内容感兴趣user.home

user.home: 用户的主目录

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

于 2016-03-07T11:19:56.727 回答
3

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

一种解决方案应该是在 /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>

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

于 2016-03-07T11:22:06.360 回答
2

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

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

HOMEPATH 解析为 \Users{username}

于 2016-03-07T14:52:11.400 回答