Ant Script内からGantタスクを実行するときのnoclassdeffounderror
-
28-10-2019 - |
質問
Androidビルドスクリプトがあります。プロジェクトで行われたカスタム作業のために、アリのターゲットの代わりにガントタスクを使用しようとします。興味深いビルドスクリプトの部分は次のように見えます。
<taskdef name="gant" classname="org.codehaus.gant.ant.Gant">
<classpath>
<pathelement location="${gant.dir}/gant-1.9.7_groovy-1.8.4.jar" />
</classpath>
</taskdef>
<target name="-pre-build">
<gant target="targetA"/>
<gant target="targetB"/>
<gant target="targetC"/>
<gant target="targetD"/>
<gant target="targetE"/>
</target>
<target name="-pre-compile">
<gant target="targetF"/>
</target>
私のbuild.gantファイルには間違いなくそれらのターゲットがありますが、antでビルドスクリプトを実行するとき、私は取得します:
(...)\build.xml:55: java.lang.NoClassDefFoundError: groovy/util/AntBuilder
アリがヒットするとすぐに:
<gant target="targetA"/>
Groovy 1.8.4を使用して、GantがWindowsインストーラーファイルからインストールされ、Eclipse HeliosがAnt Viewでインストールされています。 Gant.dirプロパティには有効なパスがあるため、そうではありません。 groovyは、build.gantファイル内にターゲットが見つからないようです。 build.gantファイルを提供するフルパスを使用してGantタスクを使用しようとしましたが、成功しませんでした。コンソールからANTスクリプトを実行するときも同じことが起こります。 build.gantファイルは、Antスクリプトで表示されます。
これを修正する方法はありますか?
解決
したがって、それはbuild.gant内の目に見えないターゲットの問題ではなく、むしろtaskdefのclasspathに欠落しているライブラリに問題でした。以下の問題は私の問題を修正します:
<path id="gant.libs">
<fileset dir="${gant.libs.dir}" includes="**/*.jar"/>
</path>
<taskdef name="gant" classname="org.codehaus.gant.ant.Gant">
<classpath refid="gant.libs"/>
</taskdef>
<target name="-pre-build">
<gant target="targetA"/>
<gant target="targetB"/>
<gant target="targetC"/>
<gant target="targetD"/>
<gant target="targetE"/>
</target>
<target name="-pre-compile">
<gant target="targetF"/>
</target>
gant.libs.dirは、gant_groovy1.8-1.9.7.jarとgroovy-all-1.8.4.jarを含むディレクトリ1.9.7バイナリスタンドアロンインストールzipファイルを指します。
所属していません StackOverflow