2016-09-09 5 views
2

Мой проект хранит свои зависимости в репозитории Maven. Я хотел бы иметь возможность переместить определенные зависимости в другой репозиторий Maven. Этот шаг - легкая часть. Но это , что двигаться, что трудно для меня, чтобы получить право.Передача зависимости Maven + все транзитивные + родительские POM

Для создания таких инструментов сборки, как Maven или Gradle, чтобы иметь возможность использовать перемещенную зависимость в сборке, мне также необходимо передать (1) транзитивные зависимости (рекурсивно) и (2) родительский POM-файл проекта, выполнив (1) снова для родителя до тех пор, пока все узлы в графике зависимостей не будут исчерпаны.

Это кажется очень распространенным явлением, и я беру свои ставки на то, что он был реализован много раз.

Вопрос: Существуют ли общие библиотеки, реализующие эту функцию из коробки?

Если нет, мне, вероятно, придется реализовать пользовательский парсер POM. Являются ли мои предположения выше, что нужно для правильного перемещения?

ответ

1

mvn dependency:list предоставит вам список всех зависимостей вашего проекта, включая транзитивные зависимости и зависимости, указанные в родительском pom.

+0

Я не ищу всех зависимостей проекта, но транзитивных зависимостей для одной заданной зависимости. Мне также нужен родительский POM, а не только зависимости от него, так как процесс сборки попытается прочитать родительский POM, поэтому мне нужно убедиться, что он тоже перемещен. – Boon

+0

Я думаю, вы могли загрузить pom зависимости в каталог, а затем запустить там команду, чтобы увидеть зависимости для этой зависимости.Я не уверен, появляются ли в этом списке родительские посты или нет, вам придется проверить себя. –

2

copy-dependencies цель maven-dependency-plugin может помочь вам в решении этой задачи:

Цель, которая копирует зависимости проекта из хранилища в определенном месте.

Он также предоставляет опцию, addParentPoms, чтобы также скопировать родительских попов, необходимых для сборки (следовательно, всей иерархии). По умолчанию этот параметр не включен.

Кроме того, с помощью различных опций include/exclude (по идентификатору группы, по идентификатору артефакта и т. Д.) Вы можете фильтровать то, что вам действительно нужно переместить.

С помощью его опции excludeTransitive вы также можете проверить, необходимы ли транзитивные зависимости или нет: по умолчанию установлено значение false, поэтому также будут скопированы транзитивные зависимости.

С помощью своего опциона outputDirectory вы можете указать, где копировать зависимости, транзитивные зависимости и иерархию файлов pom, в соответствии с любым заданным фильтром.


Вы также можете быть заинтересованы в комбинации purge-local-repository целей maven-dependency-plugin, чтобы удалить из локального репозитория независимо от требуемого проекта (в том числе переходных зависимостей, иерархии П, зависимостей плагина) и go-offline цели подготовить проект для автономного режима, то есть разрешить (загрузить) все необходимое. Опять же, обе цели включают механизмы include/exclude и управление переходными зависимостями, чтобы вы могли уточнить свою стратегию и результаты.