Как заставить Apache Ant распознавать Айви

7623
Steve

Я пытаюсь установить Apache Ivy, но я не могу заставить муравья распознать его.

В соответствии с инструкциями по установке Apache Ivy, я скачал Ivy из osuosl.org Ivy-архивов, распаковал его и скопировал файл .jar туда, где ant сможет его увидеть. Однако любая попытка сборки, зависящая от ivy, завершается неудачей следующим образом:

$ ant Buildfile: /home/ec2-user/ivy/apache-ivy-2.3.0/build.xml  init-ivy: [taskdef] Could not load definitions from resource org/apache/ivy/ant/antlib.xml. It could not be found.  retrieve-all:  BUILD FAILED /home/ec2-user/ivy/apache-ivy-2.3.0/build.xml:55: Problem: failed to create task or type antlib:org.apache.ivy.ant:retrieve Cause: The name is undefined. Action: Check the spelling. Action: Check that any custom tasks/types have been declared. Action: Check that any <presetdef>/<macrodef> declarations have taken place. No types or tasks have been defined in this namespace yet  This appears to be an antlib declaration.  Action: Check that the implementing library exists in one of: -/usr/share/ant/lib -/home/ec2-user/.ant/lib -a directory added on the command line with the -lib argument 

Я охотился, и каждая страница, на которую я смотрю, кажется, соглашается, что мне просто нужно "установить файл фляги плюща", но это, кажется, не помогает. Я пробовал:

  • Копирование ivy-2.3.0.jar в / usr / share / ant / lib и / или ~ / .ant / lib
  • То же самое, но переименование это ivy.jar
  • Добавление -lib /path/to/ivy-2.3.0.jarв команду муравья
  • Все это в каталоге ivy или в каталоге src / example / hello-ivy

Интересно, что в каталоге src / example / go-ivy выполнение выполняется antуспешно; но это не помогает другим сборкам на основе плюща работать.

Я, должно быть, упускаю что-то мучительно очевидное, но я не вижу, что это такое. Есть идеи?

(Это на "Amazon Linux AMI выпуск 2013.09")

2

2 ответа на вопрос

1
Steve

I wound up asking the same question on the Ivy users list, and got a response: http://mail-archives.apache.org/mod_mbox/ant-ivy-user/201402.mbox/%3C52FCAF1B.40903%40reast.net%3E. It turns out I simply needed to execute the following command before invoking ant:

export ANT_HOME=/usr/share/ant/ 

It appears that, while ant suggests placing files in /usr/share/ant/lib, it won't actually look there unless you set ANT_HOME.

+1 Вы помогли хотя бы одному человеку. Он даже не будет смотреть в ~ / .ant / lib, если это не определено. user606723 9 лет назад 0
0
Mark O'Connor

Я ответил на этот вопрос о Stackoverflow:

Айви не может решить зависимость, не в состоянии найти причину . Я включаю это в строку ниже:


ANT не может найти банку плюща. Необходимо поместить в одно из следующих мест:

  • $ ANT_HOME / Lib
  • $ HOME / .ant / Библиотека

Включение плюща

Ivy упакован как antlib, поэтому для его включения необходимо выполнить следующие действия:

1) Объявите пространство имен ivy в верхней части файла сборки

<project ..... xmlns:ivy="antlib:org.apache.ivy.ant"> 

2) Включите банку плюща в один из каталогов библиотеки муравьев

Ваше сообщение об ошибке указывает на некоторые возможные места для antlibs:

This appears to be an antlib declaration.  Action: Check that the implementing library exists in one of: -C:\Users\Simon\eclipse\plugins\org.apache.ant_1.8.2.v20120109-1030\lib -C:\Users\Simon\.ant\lib -a directory added on the command line with the -lib argument 

Замечания:

Прелесть antlib в том, что вам не нужно выполнять taskdef (это необязательно, если вы хотите поместить банку плюща в нестандартном месте)

Как загрузить сборку

Хотя плющ является подпроектом ANT, по какой-то необъяснимой причине плющ не упакован с ANT ....

Я обычно включаю следующую цель в мои файлы сборки для настройки новой среды:

<target name="bootstrap" description="Used to install the ivy task jar"> <mkdir dir="$/.ant/lib"/> <get dest="$/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar"/> </target> 

Он загружает банку плюща из Maven Central.

Поскольку все другие задачи ANT можно впоследствии загрузить с помощью ivy, мало кто возражает против этого маленького уродства в верхней части файла сборки.

Благодарю. Я видел этот ответ, и он точно описывает сообщение об ошибке, которое я получаю, но предлагаемые исправления, похоже, не помогают. Что касается (1), я даже вижу эту проблему с примерами проектов Ivy, такими как apache-ivy-2.3.0 / src / example / hello-ivy. Файл build.xml для этого примера проекта содержит объявление xmlns: ivy. Что касается (2), я перепробовал все, что мог придумать, чтобы включить банку плюща, как описано в моем вопросе. Есть ли у вас какие-либо дальнейшие предложения для определения, почему Ant не распознает файл jar? Steve 10 лет назад 0