从maven获取$ {basedir}的父目录

时间:2013-10-22 07:35:47

标签: java maven

有没有办法在我的pom.xml中获取${basedir}的父目录?目前我有

<earSourceDirectory>${basedir}/EAR/src/main/resources</earSourceDirectory> 

但我需要访问basedir的父目录,因为我的资源位于不同的maven项目中。

如何获取$ {basedir}的父文件夹?

4 个答案:

答案 0 :(得分:8)

${project.basedir}/../

但是,我试图避免访问不同模块中的资源。我建议使用unpack goal of the maven-dependency-plugin

答案 1 :(得分:6)

在孩子们中:

<properties>
    <main.basedir>${project.parent.basedir}</main.basedir>
</properties>

在孙子孙女中:

<properties>
    <main.basedir>${project.parent.parent.basedir}</main.basedir>
</properties>

答案 2 :(得分:4)

请不要试图超越基础,因为它被认为是一种非常糟糕的做法。 即使你现在成功了,它也将成为解决方法的开始,试图与Maven作战。最终,Maven将获胜。 如果开发人员检出带有pom.xml的目录,它应该能够使用mvn verify运行项目,而不会引用其他目录。

如果这些是共享资源,请将其作为单独的项目并将其作为依赖项(搜索多模块项目)包含在内。或者使用maven-remote-resources-plugin将这些资源提取到项目中。

答案 3 :(得分:1)

我需要将MainDirectory / Submodule / target /中生成的zip移动到MainDirectory / target /。 我尝试了所有地方的所有解决方案,但无法解决。我终于在子模块的pom.xml中尝试使用Ant插件进行复制,如下所示:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.7</version> <executions> <execution> <id>copy to parent target</id> <phase>package</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <copy todir="../target/" overwrite="true" flatten="true"> <fileset dir="${basedir}/target/"/> </copy> </target> </configuration> </execution> </executions> </plugin>