Wydaje się, że istnieje kilka sposobów na zbudowanie poms nadrzędnych w kompilacji z wieloma projektami i zastanawiam się, czy ktoś miał jakieś przemyślenia na temat zalet / wad każdego z nich.
Najprostszą metodą posiadania rodzica pom byłoby umieszczenie go w katalogu głównym projektu, tj
myproject/
myproject-core/
myproject-api/
myproject-app/
pom.xml
gdzie pom.xml jest zarówno projektem nadrzędnym, jak i opisuje moduły -core -api i -app
Następną metodą jest oddzielenie elementu nadrzędnego do własnego podkatalogu, jak w
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
Gdzie pom pom nadal zawiera moduły, ale są względne, np. ../Myproject-core
Wreszcie istnieje opcja, w której definicja modułu i element nadrzędny są oddzielone jak w
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
pom.xml
Gdzie pom nadrzędny zawiera dowolną konfigurację „współdzieloną” (dependenceManagement, właściwości itp.), A plik myproject / pom.xml zawiera listę modułów.
Zamiarem jest skalowalność do kompilacji na dużą skalę, dlatego powinna być skalowalna do dużej liczby projektów i artefaktów.
Kilka dodatkowych pytań:
- Gdzie jest najlepsze miejsce do zdefiniowania różnych wspólnych konfiguracji, takich jak kontrola źródła, katalogi wdrażania, wspólne wtyczki itp. (Zakładam, że nadrzędny, ale często mnie to gryzie i kończą w każdym projekcie, a nie w każdym projekcie wspólny).
- W jaki sposób wtyczka maven-release, Hudson i Nexus radzą sobie z konfiguracją wielu projektów (być może gigantyczne pytanie, to bardziej, jeśli ktoś został przyłapany na tym, jak skonfigurowano kompilację wielu projektów)?
Edycja: Każdy z podprojektów ma swój własny plik pom.xml, pominąłem go, aby był zwięzły.