我有一个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类路径中。非常感谢任何克服这个问题的建议。
答案 0 :(得分:1)
antrun
插件的1.6版版本pom.xml使用ant-nodeps:1.8.1
。当我查看那个jar时,我没有看到错误消息中提到的类。
根据release notes in the issue tracker,ant-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>