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ć.

questionAnswers(4)

yourAnswerToTheQuestion