Maven,本地目录的相对路径
Maven, relative path to local directory
我想复制“.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”文件夹中?有什么变量吗?
在 Maven 中,您可以使用 Java properties as Maven properties 进行构建。
Maven exposes all properties from java.lang.System
. Anything you can retrieve from System.getProperty()
you can reference in a Maven property
所以,在你的情况下你可以有以下内容:
<outputDirectory>${java.io.tmpdir}</outputDirectory>
并且输出目录将指向基于主机的用户临时目录OS。例如,在 Windows 7 中它将是
C:\Users\<user_Id>\AppData\Local\Temp
有关 Java 个属性的完整列表,请检查 official documentation,其中:
java.io.tmpdir
: Default temp file path
您可能还对user.home
感兴趣
user.home
: User's home directory
所以您可能想指向 ${user.home}\.jenkins
。
如以上评论所述,使用硬编码路径是一个非常糟糕的解决方案。
一个解决方案应该是在 /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>
它将在所有构建机器(开发人员笔记本电脑或服务器)上运行。
除了建议的答案,您还可以使用 HOMEPATH 系统变量,该变量在 Windows 系统上默认设置。
<outputDirectory>${HOMEPATH}/.jenkins</outputDirectory>
HOMEPATH 解析为 \Users{用户名}
我想复制“.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”文件夹中?有什么变量吗?
在 Maven 中,您可以使用 Java properties as Maven properties 进行构建。
Maven exposes all properties from
java.lang.System
. Anything you can retrieve fromSystem.getProperty()
you can reference in a Maven property
所以,在你的情况下你可以有以下内容:
<outputDirectory>${java.io.tmpdir}</outputDirectory>
并且输出目录将指向基于主机的用户临时目录OS。例如,在 Windows 7 中它将是
C:\Users\<user_Id>\AppData\Local\Temp
有关 Java 个属性的完整列表,请检查 official documentation,其中:
java.io.tmpdir
: Default temp file path
您可能还对user.home
user.home
: User's home directory
所以您可能想指向 ${user.home}\.jenkins
。
如以上评论所述,使用硬编码路径是一个非常糟糕的解决方案。
一个解决方案应该是在 /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>
它将在所有构建机器(开发人员笔记本电脑或服务器)上运行。
除了建议的答案,您还可以使用 HOMEPATH 系统变量,该变量在 Windows 系统上默认设置。
<outputDirectory>${HOMEPATH}/.jenkins</outputDirectory>
HOMEPATH 解析为 \Users{用户名}