Прежде всего, некоторые общие рекомендации.Любая внешняя библиотека должна быть видна для ant, значит, на пути.
Самый примитивный подход - поместить ваши муравьиные аддоны в $ ANT_HOME / lib, но это «загрязняет» вашу установку ant.
Поместите ваши внешние библиотекив своем собственном расположении, fe / ant_xtralibs и используйте параметр -lib через Ant_ARGS.
В разделе Руководство по Flaka в разделе 2 есть некоторые примечания об этом, более подробно в руководстве Ant .
В вашем примере, касающемся antcontrib, используется традиционный подход с помощью ресурса taskdef ..
Современный рекомендуемый способ заключается в использовании объявления пространства имен XML, как указано в Руководстве Flaka
прямо перед этим.section 2:
"Таким образом, все показанные фрагменты файла сборки предполагают, что файл сборки содержит следующую декларацию пространства имен XML"
Также возможно использовать Flaka через taskdef традиционным способом:
<project>
<taskdef resource="it/haefelinger/flaka/antlib.xml">
<classpath>
<pathelement location="/home/rosebud/flaka/ant-flaka-1.02.02.jar"/>
</classpath>
</taskdef>
<!-- when on path via -lib or ANT_ARGS it's enough to use : -->
<taskdef resource="it/haefelinger/flaka/antlib.xml"/>
<logo>
Hello, #{property['ant.file'].tofile.name}
</logo>
</project>
output
Trying to override old definition of datatype filterset
Trying to override old definition of task fail
Trying to override old definition of task echo
[logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[logo] : Hello, demo.xml :
[logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
обратите внимание на строки, начинающиеся с "Попытка переопределить ..". Это потому, что Flaka расширяет некоторые задачи муравья
но если вы поместите Flaka в его собственное пространство имен:
<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka">
<fl:logo>
Hello, #{property['ant.file'].tofile.name}
</fl:logo>
</project>
output
[fl:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[fl:logo] : Hello, demo.xml :
[fl:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
no more "Попытка переопределить ..." означает, что больше нет столкновения с собственными задачами муравья, как Flakaнаходится в своем собственном пространстве имен
Итак, для краткости:
1) используйте ANT_ARGS, чтобы вывести свои экстралибы (Flaka и т. д.) в игру
2) используйте современный способобъявления пространства имен
РЕДАКТИРОВАТЬ после комментария, запрашивающего пространство имен в сочетании с classpath РЕДАКТИРОВАТЬ
да, это работает,см. Руководство по Ant для получения подробной информации о antlib , особенно в разделе
"Загрузка antlib изнутри файла сборки", для Flaka вы должны использовать что-то вроде:
<project xmlns:fl="antlib:it.haefelinger.flaka">
<taskdef uri="antlib:it.haefelinger.flaka"
resource="it/haefelinger/flaka/antlib.xml"
classpath="path/to/flaka.jar"/>
но я полагаю, что вы все еще не получили преимуществ от использования $ ANT_ARGS
, просто используйте какой-нибудь скрипт для запуска ваших скриптов ant, например:
для Windows
установите JAVA_HOME = C: \java \ jdk \ 1.6.0_26
set ANT_HOME = C: \ ant
set ANT_ARGS = -lib C: \ ant_xtralibs; C: \ ant_testlibs
set PATH =% PATH%;% JAVA_HOME% \ bin;% ANT_HOME% \ bin; C: \ cvsnt
:: default
call ant -f% 1
:: debug
:: call ant -debug -f% 1
... и т. Д.
для Linux / Unix - не забывайте кавычки наANT_ARGS строка!
...
ANT_ARGS = "- lib / usr / local / ant_xtralibs: / usr / local / ant_testlibs"
export ANT_ARGS
...
Вам больше не нужно использовать taskdef с classpath !!
Использование опции -lib для загрузки дополнительных библиотек имеет еще одно преимущество.
Есть некоторые библиотеки, которые должны быть загружены перед Ant (например, BSF, js, xml).)
начинает анализ файла сборки.
ANT_ARGS - это специальная переменная среды.Его содержимое автоматически добавляется к вызову Ant.
- Другие возможности -
1)
помещать эти 'set ANT_ARGS ...' вещи в =
Linux / Unix
$ ANT_HOME / bin / ant
Windows
% ANT_HOME% / bin / ant.bat
недостаток = изменяет установку ядра ядра, запомните
ваши изменения, прежде чем копировать установку муравья на
другую машину, и происходят странные вещи!
2)
поместите ваши extralibs в$ {user.home} /. ant / lib
преимущество = каждый пользователь может использовать свой собственный набор библиотек
для получения подробной информации обратитесь к руководству по Ant:
http://ant.apache.org/manual/running.html#commandline
http://ant.apache.org/manual/running.html#libs