Как включить муравьиную баночку? - PullRequest
0 голосов
/ 06 октября 2011

Я пишу муравьиные сценарии и использую Ant flaka jar для выполнения какой-то работы.

Но flaka не работает как другая внешняя библиотека Ant.

Например, если мне нужно включить ant-contrib:

  <taskdef resource="net/sf/antcontrib/antlib.xml">
  <classpath>
        <pathelement location="../../lib/ant-contrib.jar"/>
  </classpath>
  </taskdef>

Самое главное, я могу указать, где находится банка.

Но для флака я не вижу такой вещи. На официальном сайте они просто просят пользователя скачать flaka jar в папку установки Ant.

Как мне указать, где находится флакончик, когда я хочу его использовать?

Ответы [ 2 ]

0 голосов
/ 07 октября 2011

Прежде всего, некоторые общие рекомендации.Любая внешняя библиотека должна быть видна для 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

0 голосов
/ 06 октября 2011

Я только что установил flaka менее чем за 1 минуту. Просто поместите .jar в каталог ..ant / lib, как указано в инструкциях по установке.

Запустите это:

<project xmlns:c="antlib:it.haefelinger.flaka">
 <c:logo>
  Hello, #{property['ant.file'].tofile.name}
 </c:logo>
</project>

Как говорят и на сайте. Если вывод отличается от этого:

Buildfile: C:\Users\Stefanos\Documents\Visual Studio 2010\Projects\stackOverflow\stackOverflow\build.xml
[c:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[c:logo] :                               Hello, build.xml                               :
[c:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Проверьте вашу версию Java. Должно быть> = 1,5. Ваш муравей должен быть> = 1.7 и, что не менее важно, проверяет ваши разрешения.

...