Estoy tratando de descubrir cómo organizar muchos (alrededor de 50+) proyectos maven2, para que puedan implementarse en un repositorio central de nexus. Al usar el mvn deploy
objetivo, es necesario especificar el objetivo en la etiqueta distributionManagement de esta manera:
<distributionManagement>
<repository>
<id>nexus-site</id>
<url>http://central_nexus/server</url>
</repository>
</distributionManagement>
Ahora, no quiero que cada pom.xml (de esos 50+) contenga este bloque una y otra vez. Mi primer pensamiento sería el settings.xml
archivo, pero parece que no es posible (por diseño) definirlo allí. Entonces, la primera pregunta sería, ¿por qué es así? Si fuera posible, podría especificarlo en settings.xml en la distribución maven2, que podría distribuirse a todos los desarrolladores.
La única solución posible que encontré fue crear un proyecto de master-pom para toda la organización, que contenga estas configuraciones, y hacer que todos los demás pom.xml dependan de este master-pom a través de la <parent>
etiqueta. Pero esto parece un poco extraño en compilaciones de varios módulos:
- 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)
Por lo general, leo en toda la documentación que los poms del módulo deben usar el pom principal, no uno diferente. Pero después de leer el sitio web de Maven sobre Herencia v. Agregación, está escrito que de hecho es posible.
Un problema que encontré fue con la generación del sitio maven, que parece tener problemas con esta configuración (los módulos no se vinculan correctamente si no tienen una referencia directa)
Entonces, ¿es este un enfoque válido? ¿Alguna otra solución más obvia y sencilla al problema?