0

maven ant run プラグインを介して実行しようとしている ant プロジェクトがあります。ant run プラグインを使用すると、ant クラスへのインポートを含むソースのコンパイル中に次の例外が発生しますが、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 ビルド ファイルのスニペットを次に示します。

<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 jar が含まれていないため、最初のケースでは、ant ライブラリが javac クラスパスに暗黙的に含まれていると推測しています。この問題を解決するための提案をいただければ幸いです。

4

1 に答える 1

1

antrunプラグインのバージョン 1.6 は、そのpom.xmlant-nodeps:1.8.1ごとに使用します。そのjarファイルを見ると、エラーメッセージに記載されているクラスが表示されません。

イシュー トラッカーのリリース ノートによると、プラグイン バージョン 1.7でant-nodeps:1.8.1に置き換えられました。( http://jira.codehaus.org/browse/MANTRUN-162を参照してください。)ant:1.8.2antrun

バージョン 1.7 への更新を提案し、それが機能するかどうかを確認してください。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.7</version>
</plugin>
于 2012-04-10T17:46:01.610 に答える