2

Я пытаюсь установить 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 в команду ant
  • Все это в каталоге ivy или в каталоге src / example / hello-ivy

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

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

(Это на "Amazon Linux AMI release 2013.09")

2 ответа2

1

Я задал тот же вопрос в списке пользователей Ivy и получил ответ: http://mail-archives.apache.org/mod_mbox/ant-ivy-user/201402.mbox/%3C52FCAF1B.40903%40reast.net % 3E. Оказывается, мне просто нужно было выполнить следующую команду перед вызовом ant:

export ANT_HOME=/usr/share/ant/

Похоже, что хотя ant и предлагает разместить файлы в /usr /share /ant /lib, на самом деле он не будет там выглядеть, пока вы не установите ANT_HOME.

0

Я ответил на этот вопрос о 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="${user.home}/.ant/lib"/>
    <get dest="${user.home}/.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, мало кто возражает против этого маленького уродства в верхней части файла сборки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .