Ant управление зависимостями

Кажется, что управление зависимостями ant не так уж велико, но, надеюсь, есть надежда? Сегодня есть лучший выбор для построения или управления проектами, таких как maven, плющ, но я застрял в связке проекта ant, которые зависят друг от друга, поэтому мне было интересно, существует ли "ant передовая практика" для управления зависимостями.

В частности, у меня есть:

w.war

a.jar
b.jar
c.jar

w.war - это файл войны, который я развертываю на веб-сервере. В файле войны я использую a.jar. a.jar зависит от b.jar, поэтому я счастливо упаковываю b.jar в w, как хорошо... Такое вроде ОК, пока... Проблема начинается, когда b.jar зависит от c.jar. Автор a.jar знает о своей зависимости от b.jar, поэтому он может упаковать b.jar в w.war, но он не знает о зависимости b.jar от c.jar. Более того, автор b.jar может впоследствии добавить еще больше зависимостей, таких как "b.jar зависит от e.jar", поэтому автор a.jar не имеет шансов после этих зависимостей по мере их добавления.

То, что я хотел бы иметь, - определить "a зависит от b" и "b зависит от c" (в другом файле build.xml) и использовать магию ant для компиляции их всех в w.war. Это возможно? Если нет, существует ли наилучшая практика?

Я это - близко к простому переписыванию - все в maven, но это много работы... Есть ли надежда на ant?

Ответ 1

Если вы уже используете Ant, лучше всего использовать Ivy для управления зависимостями.

http://ant.apache.org/ivy/

Он предоставляет богатый набор задач ant для манипулирования зависимостями.

Ответ 2

Просто для разочарования вы: управление зависимостями в сочетании со сборкой сложно! Если у вас нет действительно простого примера, это не проблема, и вам придется инвестировать какую-то работу.

Если вы хотите или должны использовать Ant, Ivy определенно является хорошим выбором. Будучи официальным подпроектом Ant, он интегрируется относительно плавно.

Ответ 3

Я использую Ivy в течение последних 4 лет (до того, как он присоединился к Apache) и не пожалел.

Не зная о ваших файлах Ant, немного сложно дать окончательный ответ, но я думаю, что проекты строятся за один раз. Это означает, что они не могут индивидуально публиковать свои артефакты (или файлы jar) в центральном репозитории.

Решение состоит в использовании как центральной (для общих библиотек), так и локальных (для вашего проекта) репозиториев. Вы можете посмотреть мои публичные проекты и особенно файл ivysettings.xml, потому что они используют именно этот принцип.

Ответ 5

Появилась новая система сборки с открытым исходным кодом для Java под названием EBuild (функции), что является отличной альтернативой Ant/Ivy, поскольку это особенно хорошо подходит для управления зависимостями.

Вот некоторые подробные статьи о недостатках Ant, а также Maven на сайте.