Maven rodzic pom vs moduły pom
Wydaje się, że istnieje kilka sposobów na skonstruowanie macierzystych pomsów w wieloprojektowej kompilacji i zastanawiam się, czy ktokolwiek miał jakieś przemyślenia na temat zalet / wad w każdym kierunku.
Najprostszą metodą posiadania nadrzędnego 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 rodzica do jego własnego podkatalogu, tak jak w
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
Gdzie macierzysty pom nadal zawiera moduły, ale są względne, np. ../myproject-core
Wreszcie istnieje opcja, w której definicja modułu i rodzic są rozdzielone tak, jak w
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
pom.xml
Gdzie macierzysty pom zawiera dowolną „współdzieloną” konfigurację (zarządzanie zależnością, właściwości itp.), A myproject / pom.xml zawiera listę modułów.
Intencją jest skalowalność do kompilacji na dużą skalę, więc powinna być skalowalna do dużej liczby projektów i artefaktów.
Kilka pytań dodatkowych:
Gdzie jest najlepsze miejsce do zdefiniowania różnych współdzielonych konfiguracji, takich jak kontrola źródeł, katalogi wdrażania, wspólne wtyczki itp. (Zakładam, że rodzic, ale często zostałem przez to ugryziony i znaleźli się w każdym projekcie, a nie wspólny).W jaki sposób wtyczka maven-release, hudson i nexus radzą sobie z konfiguracją wielu projektów (być może olbrzymie pytanie, bardziej, jeśli ktoś został złapany, kiedy w jaki sposób zbudowano projekt wieloprojektowy)?Edycja: Każdy z podprojektów ma swój własny plik pom.xml, więc zostawiłem go, aby go zachować.