Вопрос по – Муравьиное управление зависимостями

11

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

Конкретно в моем случае у меня есть:

w.war

a.jar
b.jar
c.jar

w.war - это файл войны, который я размещаю на веб-сервере. В военном файле я использую .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 magic, чтобы собрать их все в w.war. Это возможно? Если нет, есть ли Best-Practice?

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

Я использую свое собственное расширение для управления зависимостями для ant:trapdoor.org/projects/3  Это может или не может помочь вашей ситуации, но это работает хорошо для меня. Draemon
Так что зависимость довольно тонкая (я думаю). Тебе нужноc.jar вuse b.jar; но не нужноc.jar вbuild b.jar, Это правильно? Steve Pitchers

Ваш Ответ

5   ответов
16

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

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

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

2

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

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

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

3

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

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

Error: User Rate Limit Exceeded Ran
0

Вот мое мнение: используйте лучшее из обоих миров: Maven только для зависимостей и Ant для повседневной сборки:

Почему вы должны использовать Maven Ant Tasks вместо Maven или Ivy

0

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

Есть несколько подробных статей онедостатки муравья а такжеспециалист на сайте.

Похожие вопросы