Я пытаюсь понять, как организовать множество (около 50+) проектов maven2, чтобы их можно было развернуть в центральном репозитории nexus. При использовании 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 о наследовании против агрегирования написано, что это действительно возможно.
Одна проблема, которую я обнаружил, связана с генерацией сайта maven, которая, похоже, имеет проблемы с этой настройкой (модули не связываются правильно, если у них нет прямой обратной ссылки)
Итак, это правильный подход? Есть ли другое, более очевидное и простое решение проблемы?