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{用户名}