Я пытаюсь выяснить, как организовать много (около 50+) проектов maven2, чтобы они могли развертываться в центральном репозитории. При использовании цели mvn deploy
необходимо указать цель в теге distributionManagement следующим образом:
<distributionManagement>
<repository>
<id>nexus-site</id>
<url>http://central_nexus/server</url>
</repository>
</distributionManagement>
Теперь я не хочу, чтобы каждый pom.xml(из этих 50+) содержал этот блок снова и снова. Мой первый, хотя был бы файлом settings.xml
, но, похоже, это невозможно (по дизайну) определить его там.
Итак, первый вопрос: почему это так? Если бы это было возможно, я мог бы указать его в файле settings.xml в дистрибутиве maven2, который может быть распространен среди всех разработчиков.
Единственное возможное решение, которое я нашел, это создать общий проект master-pom в масштабах всей организации, который содержит эти параметры, и сделать все остальные pom.xml зависимыми от этого master-pom с помощью тега <parent>
. Но это выглядит странно в многомодульных сборках:
- master configuration POM (pm)
- Project 1 parent pom (p1 with module 1 and module 2 as modules)
- Project 1 module pom (with pm as parent)
- Project 2 module pom (with pm as parent)
Обычно я читаю во всей документации, что модуль poms должен использовать родительский pom, а не какой-то другой. Но после прочтения веб-сайта maven о Inheritance v. Aggregation написано, что это действительно возможно.
Одна из проблем, которые я обнаружил, - это генерация сайта maven, которая, похоже, имеет проблемы с этой настройкой (модули не связаны правильно, если у них нет прямой обратной ссылки)
Итак, это правильный подход? Любое другое, более очевидное, более простое решение проблемы?