Pregunta

Tengo un script de construcción de Android. Intenta usar tareas Gant en lugar de objetivos de hormiga para trabajos personalizados realizados en el proyecto. La parte del script de construcción interesante se ve de la siguiente manera:

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


Mi archivo build.gant definitivamente tiene esos objetivos, pero cuando se ejecuta el script de compilación con hormiga, obtengo:

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

Tan pronto como la hormiga llega a la línea:

    <gant target="targetA"/>


Utilizo Groovy 1.8.4 con Gant instalado desde el archivo de instalación de Windows y Eclipse Helios con View. La propiedad Gant.Dir tiene una ruta válida, por lo que no es el caso. Parece que Groovy no puede encontrar objetivos dentro de la compilación. Incluso intenté usar la tarea Gant con plena ruta para construir el archivo gant proporcionado, pero sin éxito. Lo mismo sucede al ejecutar Script Ant desde la consola. Build.gant el archivo es visible en el script Ant.

¿Hay alguna forma de arreglar esto?

¿Fue útil?

Solución

Por lo tanto, no era un problema con los objetivos invisibles dentro de la construcción. Gant, sino con las bibliotecas faltantes en la clase de Taskdef. Lo siguiente soluciona mi 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>

donde gant.libs.dir se refiere a un directorio que contiene gant_groovy1.8-1.9.7.jar y groovy-all-1.8.4.Jar de Gant 1.9.7 Archivo Zip de instalación independiente binaria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top