为maven多模块项目中的每个模块加载相同的ant构建文件



我有一个大型的多模块maven项目。我想在编译阶段之后移动一些生成的文件,所以我在父pom.xml文件中添加了以下插件:

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.7</version>
  <executions>
    <execution>
      <id>move-stuff</id>
      <phase>compile</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <target>
          ... lots of ant stuff here ...
        </target>
      </configuration>
    </execution>
  </executions>
</plugin>

这是可行的,但在target元素之间有很多ant任务内容,这些内容应该正确地移动到ant build.xml文件中。问题是我需要指定插件中build.xml文件的位置:

<configuration>
  <ant antfile="build.xml"/>
</configuration>

但是,不能以这样的方式指定该文件的位置,即每个子模块中的父pom.xmlpom.xml都可以加载该文件。例如,不能使用${project.basedir}/build.xml,因为它给出的结果是相对于每个模块的,而不是相对于顶级项目目录的。类似地,不能使用../build.xml,因为它只适用于子模块,而不适用于父模块。

有没有办法在maven-antrun-plugin中指定一个适用于我项目中每个模块的ant文件位置?还是我在pom.xml文件中留下了很多ant代码?

一种方法是使用user.dir属性:

    <target>
      <ant antfile="${user.dir}/build.xml"/>
    </target>

当然,只有当您从根项目触发构建时,这才有效。

相关内容

  • 没有找到相关文章

最新更新