在mavn ant运行插件执行javac时没有选择Ant类

时间:2012-04-10 14:07:44

标签: maven ant javac

我有一个ant项目,我试图通过maven ant run插件运行。我可以使用ant成功运行构建,即使在使用ant run插件时,我会在编译包含导入到ant类的源时遇到异常。

    [javac] xxxx/ant/src/org/apache/hadoop/hive/ant/GetVersionPref.java:21: package org.apache.tools.ant does not exist
[javac] import org.apache.tools.ant.AntClassLoader;
[javac]                            ^
[javac] xxxx/ant/src/org/apache/hadoop/hive/ant/GetVersionPref.java:22: package org.apache.tools.ant does not exist
[javac] import org.apache.tools.ant.BuildException;

这是ant build文件的相关片段。

    

<property name="myclasspath" refid="classpath"/>
<!-- Emit the property to the ant console -->
<echo message="Classpath = ${myclasspath}"/>

<javac
 encoding="${build.encoding}"
 srcdir="${src.dir}"
 includes="**/*.java"
 destdir="${build.classes}"
 debug="${javac.debug}"
 deprecation="${javac.deprecation}"
 includeantruntime="true">
  <compilerarg line="${javac.args} ${javac.args.warnings}" />
  <classpath refid="classpath"/>
</javac>

在任何一种情况下(直接运行或通过ant运行插件运行),打印的类路径都不包含ant jars所以我猜测第一种情况是以某种方式将ant库隐式包含在javac类路径中。非常感谢任何克服这个问题的建议。

1 个答案:

答案 0 :(得分:1)

antrun插件的1.6版版本pom.xml使用ant-nodeps:1.8.1。当我查看那个jar时,我没有看到错误消息中提到的类。

根据release notes in the issue trackerant-nodeps:1.8.1已替换为ant:1.8.2插件版本1.7中的antrun。 (见http://jira.codehaus.org/browse/MANTRUN-162。)

建议更新到1.7版并查看它是否有效。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.7</version>
</plugin>