Я намагаюся розібратися, як організувати багато (близько 50+) проектів maven2, щоб вони могли розгорнутись у центральному сховищі Nexus. Під час використання mvn deploy
цілі потрібно вказати ціль у тезі розподілу управління таким чином:
<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, яка, схоже, має проблеми з цією установкою (модулі не зв’язуються правильно, якщо вони не мають прямого зворотного посилання)
Отже, чи це правильний підхід? Будь-яке інше, більш очевидне, простіше рішення проблеми?