[ https://issues.apache.org/jira/browse/MANTRUN-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16030224#comment-16030224 ]
Guillaume Boué commented on MANTRUN-197: ---------------------------------------- This can be worked around easily by placing the Ant target inside the POM within an external build file instead, like {code:xml} <target> <ant antfile="call-macrodef-1st.xml" /> </target> {code} In the Ant build file, the import can be placed where expected. I don't think it is warranted to give first-class support for this through an {{imports}} parameter (there is also {{include}}). > Can't use ant import task in target xml > --------------------------------------- > > Key: MANTRUN-197 > URL: https://issues.apache.org/jira/browse/MANTRUN-197 > Project: Maven Antrun Plugin > Issue Type: Bug > Affects Versions: 1.8 > Reporter: Christoph Dittberner > > I want to externalize a macrodef to include it in different ant excecutions. > But using the ant import task throws an exception because the import task has > be defined *outside* of a target definition. There seems no way to specify > markup outside of or before the autogenerated main target tag to include the > import statement in the generated target/ant-run/build-main.xml. > example to illustrate the problem: > {code:title=src/ant/macrodef.xml|xml} > <?xml version="1.0" encoding="ISO-8859-1"?> > <project name="macrodef"> > <macrodef name="hello"> > <sequential> > <echo>hello world.</echo> > </sequential> > </macrodef> > </project> > {code} > {code:title=pom.xml|xml} > ... > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-antrun-plugin</artifactId> > <version>1.8</version> > <executions> > <execution> > <id>call-macrodef-1st</id> > <phase>process-sources</phase> > <goals> > <goal>run</goal> > </goals> > <configuration> > <target> > <import file="src/ant/macrodef.xml"/> > > <hello/> > </target> > </configuration> > </execution> > <execution> > <id>call-macrodef-2nd</id> > <phase>process-sources</phase> > <goals> > <goal>run</goal> > </goals> > <configuration> > <target> > <import file="src/ant/macrodef.xml"/> > > <hello/> > <hello/> > </target> > </configuration> > </execution> > <executions> > > ... > > </plugin> > ... > {code} > {code:title=stacktrace} > org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute > goal org.apache.maven.plugins:maven-antrun-plugin:1.8:run > (generate-launchers-server) on project project.build.dist: An Ant > BuildException has occured: import only allowed as a top-level task > around Ant part ...<import > file="n:\project.build.dist/src/ant/macrodef.xml"/>... @ 4:61 in > n:\project.build.dist\target\antrun\build-main.xml > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) > at > org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) > at > org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) > at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) > at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) > at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) > at > org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) > at > org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) > at > org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) > Caused by: org.apache.maven.plugin.MojoExecutionException: An Ant > BuildException has occured: import only allowed as a top-level task > around Ant part ...<import > file="n:\project.build.dist/src/ant/macrodef.xml"/>... @ 4:61 in > n:\project.build.dist\target\antrun\build-main.xml > at > org.apache.maven.plugin.antrun.AntRunMojo.execute(AntRunMojo.java:342) > at > org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) > ... 20 more > Caused by: n:\project.build.dist\target\antrun\build-main.xml:4: import only > allowed as a top-level task > at > org.apache.tools.ant.taskdefs.ImportTask.execute(ImportTask.java:133) > at > org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) > at org.apache.tools.ant.Task.perform(Task.java:348) > at org.apache.tools.ant.Target.execute(Target.java:435) > at org.apache.tools.ant.Target.performTasks(Target.java:456) > at > org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405) > at org.apache.tools.ant.Project.executeTarget(Project.java:1376) > at > org.apache.maven.plugin.antrun.AntRunMojo.execute(AntRunMojo.java:313) > ... 22 more > > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)