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