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

时间:2014-09-22 07:37:50

标签: 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中指定一个适用于我项目中每个模块的antfile位置?或者我仍然坚持在pom.xml文件中留下大量的蚂蚁代码?

1 个答案:

答案 0 :(得分:0)

一种方法是使用C3属性:

user.dir

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