NoClassDefFoundError при запуске задачи Gant из скрипта Ant - PullRequest
1 голос
/ 06 декабря 2011

У меня есть скрипт сборки Android. Он пытается использовать задачи Gant вместо целей Ant для пользовательской работы над проектом. Интересная часть скрипта сборки выглядит следующим образом:

<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. Свойство Gant.dir имеет допустимый путь, поэтому это не так. Похоже, Groovy не может найти цели в файле build.gant, даже если они присутствуют. Я пытался даже использовать задачу Ганта с указанием полного пути к файлу build.gant, но безуспешно. То же самое происходит при запуске скрипта Ant из консоли. Файл Build.gant виден в скрипте Ant.

Есть ли способ это исправить?

1 Ответ

0 голосов
/ 07 декабря 2011

Итак, это была не проблема с невидимыми целями внутри build.gant, а скорее с отсутствующими библиотеками в classpath 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 ссылается на каталог, содержащий gant_groovy1.8-1.9.7.jar и groovy-all-1.8.4.jar из Gant 1.9.7двоичный автономный установочный zip-файл.

...