15 Die settings.xml Datei und das .m2 Verzeichnis in Maven

15.1 Einführung

Die settings.xml Datei und das .m2 Verzeichnis spielen in Maven eine zentrale Rolle, um benutzerspezifische Einstellungen, Repository-Konfigurationen und andere globale Parameter zu verwalten. Diese Strukturen ermöglichen eine flexible und sichere Konfiguration, die unabhängig von einzelnen Projekt-POMs funktioniert.

15.2 Die settings.xml Datei

Die settings.xml ist eine XML-Konfigurationsdatei, die sich standardmäßig in ${user.home}/.m2 befindet (unter Windows z.B. C:\Users\<Username>\.m2\settings.xml). Hier werden persönliche Maven-Einstellungen, Server-Authentifizierungen, Proxy-Einstellungen und Profile definiert.

15.2.1 Aufbau der settings.xml

<settings>
    <!-- Beispiel für eine benutzerspezifische Konfiguration -->
</settings>

Wichtige Abschnitte:

  1. Lokales Repository
    Definiert den Pfad zum lokalen Maven-Repository (Standard: ${user.home}/.m2/repository):

    <localRepository>/path/to/local/repo</localRepository>
  2. Server-Konfigurationen
    Enthält Login-Daten für Repositories oder Deployment-Server:

    <servers>
        <server>
            <id>my-repo</id>
            <username>my-username</username>
            <password>my-password</password>
        </server>
    </servers>
  3. Proxy-Einstellungen
    Für Umgebungen, die einen Proxy zur Internetverbindung benötigen:

    <proxies>
        <proxy>
            <id>example-proxy</id>
            <active>true</active>
            <protocol>http</protocol>
            <host>proxy.example.com</host>
            <port>8080</port>
            <username>proxyuser</username>
            <password>somepassword</password>
            <nonProxyHosts>www.google.com|*.example.com</nonProxyHosts>
        </proxy>
    </proxies>
  4. Mirrors
    Ermöglicht das Spiegeln oder Ersetzen bestimmter Repositories:

    <mirrors>
        <mirror>
            <id>central-mirror</id>
            <mirrorOf>central</mirrorOf>
            <url>http://central-mirror.example.com/repo</url>
        </mirror>
    </mirrors>
  5. Profile
    Legen benutzerspezifische Build-Konfigurationen fest. Diese können automatisch oder manuell aktiviert werden:

    <profiles>
        <profile>
            <id>development</id>
            <properties>
                <env>dev</env>
            </properties>
            <repositories>
                <repository>
                    <id>dev-repo</id>
                    <url>http://dev-repo.example.com/repo</url>
                </repository>
            </repositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>development</activeProfile>
    </activeProfiles>

15.2.2 Best Practices für die settings.xml

15.3 Das .m2 Verzeichnis

Das .m2 Verzeichnis liegt im Benutzerverzeichnis (${user.home}) und enthält alle Benutzereinstellungen sowie das lokale Maven-Repository.

15.3.1 Verzeichnisstruktur

.m2/
|-- repository/
|-- wrapper/
|-- settings.xml
|-- settings-security.xml
  1. repository/
  2. wrapper/
  3. settings.xml
  4. settings-security.xml

Mit der richtigen Nutzung der settings.xml und einem gut strukturierten .m2 Verzeichnis können Maven-Nutzer ihre Build-Umgebungen an individuelle Anforderungen anpassen. Das Ergebnis sind konsistente, automatisierte und sichere Build-Prozesse für unterschiedlichste Projekte.