Question

J'ai un script de build Android.Il essaie d'utiliser des tâches Gant au lieu de cibles Ant pour le travail personnalisé effectué sur le projet.La partie intéressante du script de construction ressemble à ceci:

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


Mon fichier build.gant a définitivement ces cibles, mais lors de l'exécution du script de build avec Ant, j'obtiens:

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

dès que Ant arrive à la ligne:

    <gant target="targetA"/>


J'utilise Groovy 1.8.4 avec Gant installé à partir du fichier d'installation de Windows et Eclipse Helios avec vue Ant.La propriété Gant.dir a un chemin valide, ce n'est donc pas le cas.Il semble que Groovy ne trouve pas de cibles dans le fichier build.gant même si elles sont présentes.J'ai même essayé d'utiliser la tâche Gant avec le chemin complet du fichier build.gant fourni, mais sans succès.La même chose se produit lors de l'exécution du script Ant à partir de la console.Le fichier Build.gant est visible dans le script Ant.

Y a-t-il un moyen de résoudre ce problème?

Était-ce utile?

La solution

Donc, ce n'était pas un problème avec des cibles invisibles dans build.gant, mais plutôt avec des bibliothèques manquantes dans le chemin de classe de taskdef.Ce qui suit résout mon problème:

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

où gant.libs.dir fait référence à un répertoire contenant gant_groovy1.8-1.9.7.jar et groovy-all-1.8.4.jar du fichier zip d'installation binaire autonome de Gant 1.9.7.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top