Sto cercando di capire come organizzare molti (circa 50+) progetti maven2, in modo che possano essere distribuiti in un repository nexus centrale. Quando si utilizza l' mvn deploy
obiettivo, è necessario specificare l'obiettivo nel tag distributionManagement in questo modo:
<distributionManagement>
<repository>
<id>nexus-site</id>
<url>http://central_nexus/server</url>
</repository>
</distributionManagement>
Ora, non voglio che ogni singolo pom.xml (di quei 50+) contenga questo blocco più e più volte. Il mio primo pensiero sarebbe il settings.xml
file, ma sembra che non sia possibile (in base alla progettazione) definirlo lì. Quindi, la prima domanda sarebbe: perché è così? Se fosse possibile, potrei specificarlo nel settings.xml nella distribuzione di maven2, che potrebbe essere distribuito a tutti gli sviluppatori.
L'unica soluzione possibile che ho trovato è stata creare un progetto master-pom a livello di organizzazione, che contenga queste impostazioni e fare in modo che tutti gli altri pom.xml dipendano da questo master-pom tramite <parent>
tag. Ma questo sembra un po 'strano nelle build multi-modulo:
- 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)
Di solito leggo in tutta la documentazione che il modulo poms dovrebbe usare il genitore pom, non uno diverso. Ma dopo aver letto il sito web di Maven su Inheritance v. Aggregation è scritto che è davvero possibile.
Un problema che ho riscontrato è stato con la generazione del sito Maven, che sembra avere problemi con questa configurazione (i moduli non vengono collegati correttamente se non hanno un riferimento a ritroso diretto)
Quindi è un approccio valido? Qualche altra soluzione, più ovvia e più semplice al problema?