我有一个大型的多模块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.xml
和pom.xml
都可以加载该文件。例如,不能使用${project.basedir}/build.xml
,因为它给出的结果是相对于每个模块的,而不是相对于顶级项目目录的。类似地,不能使用../build.xml
,因为它只适用于子模块,而不适用于父模块。
有没有办法在maven-antrun-plugin
中指定一个适用于我项目中每个模块的ant文件位置?还是我在pom.xml
文件中留下了很多ant代码?
一种方法是使用user.dir
属性:
<target>
<ant antfile="${user.dir}/build.xml"/>
</target>
当然,只有当您从根项目触发构建时,这才有效。