Próbuję dowiedzieć się, jak zorganizować wiele (około 50+) projektów maven2, aby można je było wdrożyć w centralnym repozytorium Nexus. Korzystając z mvn deploy
celu, należy określić cel w tagu distributionManagement w następujący sposób:
<distributionManagement>
<repository>
<id>nexus-site</id>
<url>http://central_nexus/server</url>
</repository>
</distributionManagement>
Teraz nie chcę, aby każdy pojedynczy plik pom.xml (z tych 50+) zawierał ten blok w kółko. Moim pierwszym byłby settings.xml
plik, ale wydaje się, że nie jest możliwe (zgodnie z projektem), aby go tam zdefiniować. Zatem pierwsze pytanie brzmiałoby, dlaczego tak jest? Gdyby to było możliwe, mógłbym to określić w pliku settings.xml w dystrybucji maven2, który mógłby być dystrybuowany do wszystkich programistów.
Jedynym możliwym rozwiązaniem, które znalazłem, było utworzenie projektu master-pom obejmującego całą organizację, który zawiera te ustawienia i uzależnienie wszystkich innych pom.xml od tego master-pom za pośrednictwem <parent>
tagu. Ale wygląda to trochę dziwnie w kompilacjach wielomodułowych:
- 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)
Zwykle czytam w całej dokumentacji, że moduł poms powinien używać pom-rodzica, a nie innego. Ale po przeczytaniu strony internetowej maven o dziedziczeniu v. Aggregation napisano, że jest to rzeczywiście możliwe.
Jeden problem, który znalazłem, dotyczył generowania witryny Maven, która wydaje się mieć problemy z tą konfiguracją (moduły nie są poprawnie łączone, jeśli nie mają bezpośredniego odniesienia wstecznego)
Czy jest to więc prawidłowe podejście? Jakieś inne, bardziej oczywiste, prostsze rozwiązanie problemu?