質問

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ファイルを指します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top