18

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

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

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

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

4

4 回答 4

12
${project.basedir}/../

但是,我尽量避免访问不同模块中的资源。我建议使用maven-dependency-plugin 的 unpack 目标

于 2013-10-22T08:11:27.963 回答
12

在孩子们:

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

在孙辈中:

<properties>
    <main.basedir>${project.parent.parent.basedir}</main.basedir>
</properties>
于 2014-08-13T15:41:47.813 回答
6

请不要试图走出 basedir,因为这被认为是一种非常糟糕的做法。即使你现在成功了,这也将是解决方法的开始,尝试与 Maven 抗争。最终,Maven 将获胜。如果开发人员使用 签出目录pom.xml,它应该能够在mvn verify不引用其他目录的情况下运行项目。

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

于 2013-10-23T17:37:06.923 回答
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>
于 2020-05-02T15:08:53.223 回答