Skip to content

Maven

Maven ist ein Tool das zur Paketverwaltung in Java-Projekten eingesetzt werden kann um diese zu organisieren und auch um Automatisierungen einzubauen.

Project Object Model - POM

Die Konfiguration eines Projektes, welches Maven einsetzt, wird mittels eines Projekt Object Models (POM) realisiert. Dieses PIM wird durch die pom.xml im Projekt-Root abgebildet.

Diese Datei beschreibt...

  • das Projekt
  • Abhaengigkeiten zu Paketen
  • Konfigurationen von Plugins
  • Relationen zu Modulen anderer Projekte
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>example</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>com.example</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
           //...
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
            //...
            </plugin>
        </plugins>
    </build>
</project>

Dependencies

Abhaengigkeiten werden in der POM wie folgt definiert:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.16</version>
</dependency>

Properties

Um eine Verbesserung der Wartbarkeit innerhalb der POM zu gewaehrleisten koennen zB Versionsnummern in properties ueberfuehrt werden um diese wieder zu verwenden. So muss man nur einmal die Versionsnummer anpassen:

<properties>
    <spring.version>5.3.16</spring.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
</dependencies>

Lifecycle

  • validate - Ueberprueft die Korrektheit des Projektes
  • compile - Compiliert den SourceCode in ein Artefakt
  • test - Ausfuehrung von Unittests
  • package - Kompilierung des Codes
  • integration-test - Tests, die auf den Paketen aufbauen
  • verify - Validiert die Pakete
  • install - Installiert die Pakete in das lokale Maven Repository
  • deploy - Deployed die Pakete auf einen Remote Server oder in ein Repository

Wichtige Befehle

Ein ausgefuehrter Befehl fuehrt auch immer die vorhergehenden notwendigen Punkte des Lifecycle aus.

Befehl Beschreibung
mvn clean Cleans the project by deleting the target directory
mvn compiler:compile Compiles the source classes
mvn package Build the project and create the JAR/WAR files
mvn install Build the project and install package files to local repository
mvn deploy Deploy the build artifact to the remote repository
mvn validate Validate the project is correct als everything is available
mvn dependency:tree Generates the dependency tree of the project
mvn dependency:analyze Analyze the project and identify the unused delcared dependencies
mvn test Tests the source code
mvn verify Run any checks on results of integration tests
mvn compile compile the source code of the project