我在https://github.com/jjYBdx4IL/example-maven-project-setups/blob/master/antrun-foreach/pom.xml设置了一个示例:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>process-test-resources</phase>
<configuration>
<tasks>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<foreach target="unzipLibs" param="fileName">
<path>
<fileset dir="${basedir}" casesensitive="yes">
<include name="*.xml"/>
</fileset>
</path>
</foreach>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>1.0b3</version>
<!-- <exclusions>
<exclusion>
<artifactId>ant</artifactId>
<groupId>ant</groupId>
</exclusion>
</exclusions>-->
</dependency>
</dependencies>
<configuration>
<target name="unzipLibs">
<echo message="${fileName}" />
</target>
</configuration>
</plugin>
但是,无论我尝试什么,都行不通:
Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (default) on project antrun-foreach: Error executing ant tasks: org.apache.tools.ant.util.FileUtils.getFileUtils()Lorg/apache/tools/ant/util/FileUtils; -> [Help 1]
或者,使用蚂蚁排除法:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (default) on project antrun-foreach: An Ant BuildException has occured: The following error occurred while executing this line:
[ERROR] /home/travis/build/jjYBdx4IL/example-maven-project-setups/antrun-foreach/pom.xml:5: Unexpected element "{http://maven.apache.org/POM/4.0.0}project" {antlib:org.apache.tools.ant}project
[ERROR] around Ant part ...<foreach param="fileName" target="unzipLibs">... @ 5:48 in /home/travis/build/jjYBdx4IL/example-maven-project-setups/antrun-foreach/target/antrun/build-main.xml
Complete build log。
将ant任务移至外部文件无济于事。
更新:问题似乎是maven-antrun-plugin不支持定义多个antrun目标……https://jira.codehaus.org/browse/MANTRUN-86
最佳答案
通过将目标定义移动到单独的ant xml构建文件中来解决。
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>process-test-resources</phase>
<configuration>
<target>
<!-- maven does not support defining more than one target... -->
<!-- https://jira.codehaus.org/browse/MANTRUN-86 -->
<ant antfile="${basedir}/unzip.xml" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>1.0b3</version>
<exclusions>
<exclusion>
<artifactId>ant</artifactId>
<groupId>ant</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<configuration>
</configuration>
</plugin>
unzip.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<project name="maven-antrun-" default="main" >
<target name="main">
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
<foreach param="fileName" target="unzipLibs">
<path>
<fileset dir="/home/mark/mysvn/devel/java/misc/maven/antrun-foreach" casesensitive="yes">
<include name="*.xml"/>
</fileset>
</path>
</foreach>
</target>
<target name="unzipLibs">
<echo message="${fileName}"/>
</target>
</project>