Maven bietet über die einfache Projektkonfiguration (pom.xml) hinaus
diverse Möglichkeiten, Build- und Veröffentlichungsprozesse zu
individualisieren. Die Datei settings.xml, das
<distributionManagement>-Element im POM und das Maven
Release Plugin sind hierfür zentrale Bausteine.
Die Datei settings.xml im Benutzerverzeichnis
(${user.home}/.m2) oder wahlweise in einem
projektspezifischen Pfad enthält benutzerspezifische und globale
Einstellungen, die nicht direkt in der pom.xml verankert
sind. Typische Anwendungsfälle sind das Hinterlegen von
Server-Authentifizierungen, Proxy-Einstellungen und
Spiegelkonfigurationen.
<settings>
<!-- Lokales Repository anpassen -->
<localRepository>/path/to/local/repo</localRepository>
<!-- Serverkonfiguration für Deployments -->
<servers>
<server>
<id>my-nexus</id>
<username>deployUser</username>
<password>secretPassword</password>
</server>
</servers>
<!-- Proxy-Einstellungen -->
<proxies>
<proxy>
<id>corp-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>proxy.corporate.com</host>
<port>8080</port>
<username>proxyUser</username>
<password>proxyPass</password>
<nonProxyHosts>localhost|*.corp.com</nonProxyHosts>
</proxy>
</proxies>
<!-- Spiegel der Repositories (z.B. eine interne Mirror-URL) -->
<mirrors>
<mirror>
<id>nexus-mirror</id>
<mirrorOf>*</mirrorOf>
<url>http://nexus.corp.com/repository/mirror-all</url>
</mirror>
</mirrors>
<!-- Profile mit benutzerspezifischen Settings -->
<profiles>
<profile>
<id>dev-profile</id>
<properties>
<someCustomProperty>someValue</someCustomProperty>
</properties>
</profile>
</profiles>
<!-- Aktivierung bestimmter Profile -->
<activeProfiles>
<activeProfile>dev-profile</activeProfile>
</activeProfiles>
</settings>settings-security.xml).settings.xml sollte für Benutzer- oder Firmenweite
Konfigurationen genutzt werden.Im <distributionManagement>-Abschnitt eines POM
wird festgelegt, wohin Artefakte bei einem erfolgreichen Build (Phase
deploy) veröffentlicht werden sollen. Dies umfasst sowohl
Release- als auch
Snapshot-Repositories.
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<distributionManagement>
<repository>
<id>release-repo</id>
<url>http://nexus.corp.com/repository/releases</url>
</repository>
<snapshotRepository>
<id>snapshot-repo</id>
<url>http://nexus.corp.com/repository/snapshots</url>
</snapshotRepository>
<site>
<id>company-site</id>
<url>http://webserver.corp.com/maven-sites/my-app</url>
</site>
</distributionManagement>
</project>Die in <distributionManagement> verwendeten
<id>-Angaben müssen in der settings.xml
unter <servers> hinterlegt sein, damit Maven die
nötigen Credentials kennt.
Das Release Plugin automatisiert den Prozess der Versionsanpassung, Tag-Erzeugung im Versionskontrollsystem und das Verteilen der Artefakte in ein Remote-Repository. So wird sichergestellt, dass Releases reproduzierbar und einheitlich durchgeführt werden.
1.0.0-SNAPSHOT)
auf eine Release-Version (z. B. 1.0.0).release-1.0.0) im SCM.1.0.1-SNAPSHOT).<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<pushChanges>true</pushChanges>
<!-- weitere Einstellungen, z.B. für GIT oder SVN -->
</configuration>
</plugin>true, werden
Änderungen direkt in die Remote-Versionsverwaltung übertragen.# Vorbereitung und Versionsanpassung
mvn release:prepare
# Erzeugt Tag, ändert POM auf Release-Version, committet, setzt nächste SNAPSHOT-Version
# Deployment und finaler Release
mvn release:perform
<id>
im <distributionManagement> mit
settings.xml übereinstimmen.settings.xml
werden private Repositories, Spiegel und Servercredentials
definiert.<distributionManagement>) steht, wohin Snapshots und
Releases kommen.Ziel ist es, dass jede auslieferbare Version klar mit einem Tag im SCM verknüpft ist und dass sich auf einfache Weise nachvollziehen lässt, woher Artefakte stammen. Alle involvierten Entwickler und CI/CD-Umgebungen greifen auf dieselbe Konfiguration zu, was den gesamten Prozess standardisiert und reproduzierbar macht.
Mit der erweiterten Konfiguration durch settings.xml, Distribution Management und das Maven Release Plugin lassen sich Maven-Projekte standardisiert, sicher und effizient veröffentlichen. Diese Bausteine stellen sicher, dass Ihre Builds konsistent, die Artefakte klar versioniert und die Credentials an zentraler Stelle verwaltet sind. So wird ein reibungsloser Entwicklungs- und Auslieferungsprozess gewährleistet.