Как мне поделиться Maven DepdendencyManagement из нескольких источников? - PullRequest
2 голосов
/ 29 сентября 2011

У меня есть многомодульный проект Maven. Некоторые из модулей создают пользовательскую упаковку для библиотек, созданных другими модулями. Используемая упаковка имеет свой собственный набор версионных зависимостей, с которыми мне приятно играть.

В качестве примера: у моего родительского POM может быть запись, например, для commons-codec:commons-codec 1.4, мой POM "core-lib" включает его как зависимость (без явной версии), и я хочу убедиться, что мой модуль упаковки входит в правильную версию. Тем не менее, конкретный тип пользовательской упаковки, которую я использую, также требует, например, log4j:log4j 1.2.15, и я хочу убедиться, что при запуске моего упаковочного модуля он также связывает правильную версию log4j.

Вот морщинка: в примере POM, над которым я работаю для «проекта, создающего {настраиваемую упаковку}», используется родительский элемент, предоставленный командой по изготовлению настраиваемой упаковки. Если я использую их родителей, я теряю информацию о версии для commons-codec. Если я использую своего родителя, я потеряю информацию о версии для log4j.

Теперь, обычно, если я спрашиваю «как сделать так, чтобы A и B зависели от одной и той же версии», вы отвечаете «сделать так, чтобы A и B имели одного и того же родителя, и включить раздел dependencyManagement в родительский». Моя проблема в том, что мне нужно, чтобы A, B и C зависели от одной и той же версии, но я не имею никакого контроля над C.

Я думаю, это то, к чему Maven "миксин" предназначены, но, конечно, они еще не существуют. В то же время я выбираю одного из родителей, затем копирую и вставляю раздел dependencyManagement из другого POM с комментарием, гласящим «убедитесь, что вы обновляете». Очевидно, что это уродливый, уродливый взлом, но я не нашел другого способа поддерживать связь с обеими сторонами.

Ответы [ 3 ]

0 голосов
/ 12 октября 2011

Пока что я собираюсь принять ответ: «Это одна из действительно неприятных вещей в Maven».Возможно, этот вопрос может быть обновлен, когда Maven 3.1 наконец запустится.

0 голосов
/ 11 января 2012

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

0 голосов
/ 29 сентября 2011

Как насчет использования подключаемого модуля для упаковки артефакта со всеми его зависимостями и запуска на нем модуля упаковки? Тогда вы не пробуете никакой магии пом. Это просто вопрос одного проекта, использующего артефакт из другого проекта, как обычно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...