Domanda

Ho uno script di build Android. Cerca di utilizzare compiti Gant invece di obiettivi di Ant per il lavoro personalizzato svolto sul progetto. L'interessante parte di Build Script sembra nel modo seguente:

<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>


Il mio file build.gant ha sicuramente quegli obiettivi, ma quando esegui la sceneggiatura di build con Ant ottengo:

(...)\build.xml:55: java.lang.NoClassDefFoundError: groovy/util/AntBuilder

Non appena la linea di Ant colpisce:

    <gant target="targetA"/>


Uso Groovy 1.8.4 con gant installato dal file di installazione di Windows ed Eclipse Helios con vista Ant. La proprietà Gant.dir ha un percorso valido, quindi non è il caso. Sembra che Groovy non possa trovare obiettivi all'interno del file build.gant anche se sono presenti. Ho anche provato a utilizzare Gant Task con il percorso completo per build.gant file fornito, ma senza successo. La stessa cosa accade quando si esegue lo script di formiche dalla console. Build.gant File è visibile nello script di Ant.

C'è un modo per risolvere questo problema?

È stato utile?

Soluzione

Quindi, non è stato un problema con gli obiettivi invisibili all'interno di build.gant, ma piuttosto con le librerie mancanti nel percorso di classe di TaskDef. Quanto segue risolve il mio problema:

<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>

dove gant.libs.dir si riferisce a una directory contenente gant_groovy1.8-1.9.7.jar e groovy-all-1.8.4.jar da Gant 1.9.7 File zip di installazione standalone binaria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top