使用Maven添加根路径

时间:2013-08-22 13:39:02

标签: java maven

我正在使用copy-maven-plugin提供的com.github.goldin。我想通过Maven复制一些文件。

但是,我不想硬编码路径,因为驱动器会有所不同。例如:

<build>
  <plugins>
    <plugin>
      <groupId>com.github.goldin</groupId>
      <artifactId>copy-maven-plugin</artifactId>
      <version>0.2.5</version>
      <executions>
        <execution>
          <id>create-archive</id>
          <phase>test</phase>
          <goals>
            <goal>copy</goal>
          </goals>
          <configuration>
            <resources>
              <resource>
                <targetPath>/../src/Server-Parent/src/test/resources</targetPath>
                <file>/../src/Server-Parent/DB/src/test/resources/mongoDB.xml</file>
                <destFileName>mongoDB.xml</destFileName>
              </resource>
            </resources>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

例如,当我硬编码时,C:\folder name\src\Server-Parent\src\test\resources它可以在任何Maven项目中完美运行。但是,只要我放../src/../src它就会出现问题。

我有什么想法可以解决这个问题吗?

[ERROR] Failed to execute goal com.github.goldin:copy-maven-plugin:0.2.5:copy (c reate-archive) on project Server-Parent: Processing <resource> [Target p ath(s) [/../src/Server-Parent/src/test/resources], directory [C:/folder name\src/Server-Parent/DB/src/test/resources], dependencies []] fa iled with [java.lang.AssertionError]: [C:\folder name\src\Server-Parent\DB\sr c\test\resources] does not exist. Expression: d.directory -> [Help 1] [ERROR]

编辑2:

我想要实现的目标:

我有Server-Parent,它是包含pom值的pom.xml。其中包含另一个包含pom.xml pom值的Server-SubParent。现在里面是包含jar的Server-SubFunctionality。

根据你的回答,如何实现这一目标:

$ {project.basedir}

这是三个项目,其中Server-SubParent是Server-Parent的模块,但Server-SubParent是另一个包含另一个包含实际功能的模块的pom。

Server-Parent

 <modelVersion>4.0.0</modelVersion>
 <artifactId>Server-Parent</artifactId>
 <packaging>pom</packaging>

 <name>Server-Parent</name>

 <modules>
<module>Server-Sub-Parent</module>
 </modules>

Server-SubParent

 <modelVersion>4.0.0</modelVersion>

  <parent>
<groupId>com.server</groupId>
<artifactId>Server-Parent</artifactId>
<version>S06B1-RELEASE</version>
 </parent>

 <artifactId>Server-Sub-Parent</artifactId>
 <packaging>pom</packaging>

 <name>Server-Sub-Parent</name>

<modules>
<module>Server-Sub-ParentFunctionality</module>
</modules>

Server-Sub-Parent-Functionality

 <parent>
<groupId>com.server</groupId>
<artifactId>Server-Sub-Parent</artifactId>
<version>S06B1-RELEASE</version>
</parent>

<artifactId>Server-Sub-Parent-Functionality</artifactId>
<packaging>jar</packaging>

<name>Server-Sub-Parent-Functionality</name> 

1 个答案:

答案 0 :(得分:0)

尝试使用maven预定义变量。

<resource>
                <targetPath>${project.basedir}/../src/Server-Parent/src/test/resources</targetPath>
                <file>${project.basedir}/../src/Server-Parent/DB/src/test/resources/mongoDB.xml</file>
                <destFileName>mongoDB.xml</destFileName>
              </resource>

一些有用的变量

${project.basedir}
${project.build.directory}
${project.build.sourceDirectory}

更多信息here