Master 2

Maven Deep Dive

Modernes Maven-Multi-Module-Enterprise-Projekt mit Markdown, HTML, PDF und Pattern-Dokumentation.

Maven Deep Dive

Parent POM

Der Parent POM definiert gemeinsame Java-Version, Plugin-Versionen und Module. Er soll nicht unkontrolliert Abhaengigkeiten in alle Module pumpen. Deshalb werden viele Abhaengigkeiten nur in den konkreten Modul-POMs gesetzt.

<modules>
  <module>shared-kernel</module>
  <module>order-domain</module>
  <module>order-application</module>
  <module>adapters-rest-spring</module>
  <module>app-spring-boot</module>
</modules>

Dependency Management

Dependency Management legt Versionen zentral fest. Ein Modul entscheidet trotzdem selbst, ob es die Dependency braucht.

Plugin Management

Plugin Management vermeidet Versionsdrift. Der Compiler verwendet bewusst release, damit Source, Target und Bootclasspath konsistent sind.

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <release>${java.version}</release>
  </configuration>
</plugin>

Reactor-Strategie

In grossen Projekten baust du selten alles. Beispiele:

mvn -pl order-domain test
mvn -pl app-spring-boot -am verify
mvn -pl architecture-tests -am test

-pl waehlt Module, -am baut benoetigte Abhaengigkeiten mit.

Typische Enterprise-Regel

Domain-Module duerfen keine Framework-Starter importieren. REST/JPA/Kafka gehoeren in Adaptermodule.

Stand 2026-07-07. Relative Links und Codebloeke geprueft.

⌂ Cockpit