У нас есть большая ( > 500 000 LOC) Java-система, которая зависит от 40-50 OSS пакеты. Система построена с помощью Ant, а управление зависимостями - обрабатываются вручную в настоящее время. Я изучаю Айви и/или Maven для автоматизировать зависимости. Мы рассмотрели Maven как автоматизацию построения системы в прошлом году и отклонил его, потому что это потребовало бы полностью реструктурируя нашу систему в соответствии с архитектурой Maven. Теперь я чтобы автоматизировать только задачи управления зависимостями.
Я провел несколько экспериментов с Ivy, но столкнулся с проблемами. Например, когда я указываю ActiveMQ как зависимость и скажу Ivy использовать POM в репозитории Maven для спецификации зависимостей, Ivy извлекает кучу пакетов (Jetty, Derby и Geronimo для экземпляр), которые, как мне известно, не нужны, просто используйте ActiveMQ.
Если я устанавливаю usepoms = "false" в файле ivysettings.xml, он выбирает только activemq.jar, но это, кажется, побеждает цель Айви и переносит его на простой кувшинщик с зависимой от вручную зависимостью технические характеристики.
Там больше проблема, что раньше называлось "DLL Hell" в Окна. В некоторых случаях две прямые зависимости первого уровня будут указывают на разные версии одной и той же транзитивной зависимости (для экземпляр log4j.jar). Только один log4j.jar может быть в пути к классам, поэтому разрешение зависимостей включает в себя ручное определение, какая версия совместимый со всеми своими клиентами в нашей системе.
Я думаю, все это сводится к качеству каждой зависимости пакета спецификации (POM). В случае ActiveMQ нет области декларации, поэтому любая ссылка на ActiveMQ будет загружать все ее за исключением случаев, когда мы вручную исключаем те, которые, как мы знаем, не хотите.
В случае log4j требуется автоматическое разрешение зависимостей что все клиенты log4j (другие пакеты, зависящие от log4j) утвердить все предыдущие версии log4j и предоставить диапазон (или список) совместимых версий log4j в POM. Возможно, это тоже много спросить.
Это текущее состояние дел, или я чего-то не хватает?