J'essaie de comprendre comment organiser de nombreux projets maven2 (environ 50+), afin qu'ils puissent se déployer dans un référentiel central nexus. Lors de l'utilisation de l' mvn deploy
objectif, il est nécessaire de spécifier la cible dans la balise distributionManagement comme ceci:
<distributionManagement>
<repository>
<id>nexus-site</id>
<url>http://central_nexus/server</url>
</repository>
</distributionManagement>
Maintenant, je ne veux pas que chaque pom.xml (de ces 50+) contienne ce bloc encore et encore. Mon premier serait le settings.xml
fichier, mais il semble qu'il n'est pas possible (de par sa conception) de le définir ici. Alors, la première question serait: pourquoi est-ce le cas? Si cela était possible, je pourrais le spécifier dans le fichier settings.xml de la distribution maven2, qui pourrait être distribué à tous les développeurs.
La seule solution possible que j'ai trouvée était de créer un projet master-pom à l'échelle de l'organisation, qui contient ces paramètres, et de faire en sorte que tous les autres pom.xml dépendent de ce master-pom via <parent>
tag. Mais cela semble un peu étrange dans les versions multi-modules:
- 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)
Habituellement, je lis dans toute la documentation que le module poms doit utiliser le pom parent, pas un autre. Mais après avoir lu le site Web maven sur l'héritage contre l'agrégation, il est écrit que c'est effectivement possible.
Un problème que j'ai trouvé était avec la génération de site maven, qui semble avoir des problèmes avec cette configuration (les modules ne sont pas liés correctement s'ils n'ont pas de référence directe)
Alors, est-ce une approche valable? Une autre solution plus évidente et plus simple au problème?