Сбой Buildr из-за невозможности загрузить ant

При попытке построить этот проект:

project_layout = Layout.new
project_layout[:source,:main,:java] = 'src'
project_layout[:source,:test,:java] = 'test'

define 'hausaufgaben', :layout => project_layout do
    project.version = '1.0'
    package :jar
end

Я получаю эту ошибку:

RuntimeError : Unable to download org.apache.ant:ant:jar:1.8.3. No remote repositories defined.

Из этого сообщения я понял, что buildr использует ant внутри (странно, я бы подумал, что он использует Rake для сборки). В Кратком руководстве это не упоминается. Что еще более раздражает, так это то, что у меня уже есть ant (1.8.2, а не 1.8.3, но это не должно иметь такого большого значения), и, как ни странно, жалоб нет, пока buildr не находит никаких java-файлов. (протестировал это, оставив макет со значением по умолчанию).

Теперь к самому вопросу: нужно ли мне должен добавить репозиторий, в котором buildr может найти ant, или я могу сделать это иначе?

Для справки: я установил buildr с jruby -S gem install buildr и запустил с jruby -S buildr package.


person Cubic    schedule 08.12.2012    source источник


Ответы (2)


Buildr использует Rake для оценки и выполнения задач. Однако у Rake нет никаких знаний о том, как конкретно создавать Java-проекты. Вместо того, чтобы переписывать каждую задачу, которую он поддерживает, на ruby, Buildr использует задачи ant для реализации некоторых своих собственных задач. (Одним из них, который я могу сразу придумать, является запуск тестов JUnit; я уверен, что есть и другие.) Итак, Buildr нуждается в Ant.

Вы можете либо добавить соответствующий удаленный репозиторий, либо убедиться, что правильная версия ant jar находится в кеше m2 на каждой машине, которая будет использовать ваш файл сборки. Для артефакта в вашем сообщении об ошибке ожидаемый путь будет $HOME/.m2/repository/org/apache/ant/ant/1.8.3/ant-1.8.3.jar.

Обратите внимание, что ant, скорее всего, не единственная зависимость, которую buildr попытается загрузить. Вам придется выполнить это ручное разрешение для каждой зависимости, если вы не хотите определять удаленный репозиторий.

(Обратите внимание, что если вы запустите buildr в каталоге без файла сборки, он предложит сгенерировать его для вас. Тот, который он сгенерирует, будет иметь соответствующий настроенный удаленный репозиторий.)

person Rhett Sutphin    schedule 09.12.2012
comment
Спасибо, я не знал о создании файла сборки. Да, ожидать, что что-то будет в кеше, для меня действительно не вариант (я пишу это для людей, которые понятия не имеют, что maven вообще существует). - person Cubic; 09.12.2012

Как указал Ретт, Buildr тайно использует Ant для реализации некоторых своих задач и попытается загрузить необходимые библиотеки, когда это необходимо.

Обычно я регистрирую удаленный репозиторий в файле сборки, чтобы сборка знала, откуда скачать библиотеку, если она еще не кэширована локально. Поэтому попробуйте добавить следующее в начало сборки.

repositories.remote << 'http://repo1.maven.org/maven2'
person Peter Donald    schedule 09.12.2012