Ich versuche herauszufinden, wie viele (über 50) maven2-Projekte so organisiert werden können, dass sie in einem zentralen Nexus-Repository bereitgestellt werden können. Wenn Sie das mvn deploy
Ziel verwenden, müssen Sie das Ziel im DistributionManagement-Tag wie folgt angeben:
<distributionManagement>
<repository>
<id>nexus-site</id>
<url>http://central_nexus/server</url>
</repository>
</distributionManagement>
Jetzt möchte ich nicht, dass jede einzelne pom.xml (von diesen 50+) diesen Block immer und immer wieder enthält. Mein erstes wäre zwar die settings.xml
Datei, aber es scheint nicht möglich zu sein, sie dort zu definieren. Die erste Frage wäre also, warum das so ist. Wenn es möglich wäre, könnte ich es in der settings.xml in der maven2-Distribution angeben, die an alle Entwickler verteilt werden könnte.
Die einzig mögliche Lösung, die ich gefunden habe, bestand darin, ein organisationsweites Master-Pom-Projekt zu erstellen, das diese Einstellungen enthält, und alle anderen pom.xml über das <parent>
Tag von diesem Master-Pom abhängig zu machen . Bei Builds mit mehreren Modulen sieht dies jedoch seltsam aus:
- 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)
Normalerweise lese ich in der gesamten Dokumentation, dass die Modul-Poms den übergeordneten Pom verwenden sollten, nicht einen anderen. Aber nach dem Lesen der Maven-Website über Inheritance v. Aggregation steht geschrieben, dass dies tatsächlich möglich ist.
Ein Problem, das ich gefunden habe, war die Generierung der Maven-Site, die anscheinend Probleme mit diesem Setup hat (Module werden nicht richtig verknüpft, wenn sie keinen direkten Rückverweis haben).
Ist das also ein gültiger Ansatz? Gibt es eine andere, offensichtlichere und einfachere Lösung für das Problem?