1

Androidビルドスクリプトがあります。プロジェクトで行われるカスタム作業には、Antターゲットの代わりにGantタスクを使用しようとします。興味深いビルドスクリプトの部分は次のようになります。

<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

Antがラインに到達するとすぐに:

    <gant target="targetA"/>


WindowsインストーラーファイルからインストールされたGantを備えたGroovy1.8.4と、Antビューを備えたEclipseHeliosを使用しています。Gant.dirプロパティには有効なパスがあるため、そうではありません。Groovyは、ターゲットが存在していても、build.gantファイル内でターゲットを見つけることができないようです。提供されたbuild.gantファイルへのフルパスでGantタスクを使用しようとしましたが、成功しませんでした。コンソールからAntスクリプトを実行する場合も同じことが起こります。Build.gantファイルはAntスクリプトで表示されます。

これを修正する方法はありますか?

4

1 に答える 1

0

したがって、build.gant内の非表示のターゲットではなく、taskdefのクラスパスにライブラリがないという問題でした。以下は私の問題を修正します:

<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は、Gant1.9.7バイナリスタンドアロンインストールzipファイルのgant_groovy1.8-1.9.7.jarおよびgroovy-all-1.8.4.jarを含むディレクトリを指します。

于 2011-12-07T00:23:55.490 に答える