Hochladen von Java-Artefakten nach Maven Central

Maven Central ist das wichtigste öffentliche Repository im Java-Ökosystem und ermöglicht es Entwicklern, wiederverwendbare Komponenten einfach in ihre Projekte einzubinden.

Das Hochladen von Java-Artefakten in das Maven Central Repository ist ein essentieller Schritt, um Java-Bibliotheken und -Anwendungen einer breiten Entwickler-Community zur Verfügung zu stellen. Vor 8 Jahren hatte ich das schon mal beschrieben. Ein paar Änderungen gibt es inzwischen.

Warum sollte man überhaupt Artefakte nach Maven Central hochladen?


Sichtbarkeit und Zugänglichkeit

Durch die Veröffentlichung auf Maven Central wird Ihre Bibliothek für Millionen von Entwicklern weltweit zugänglich. Das Maven Central Repository ist das Standard-Repository für die meisten Build-Tools in der Java-Welt, einschließlich Maven und Gradle. Dadurch wird es für andere Entwickler einfacher, Ihre Bibliothek ohne zusätzliche Konfigurationen direkt in ihre Projekte zu integrieren.

Zentralisiertes Management von Abhängigkeiten

Maven Central dient als zentraler Ort, um Abhängigkeiten zu verwalten. Entwickler können darauf vertrauen, dass die Bibliotheken, die sie von dort beziehen, stabil und zuverlässig sind. Zudem sorgt das Repository für die Verfügbarkeit von Artefakten und verhindert Versionskonflikte, indem klare Richtlinien für Versionsnummerierung und Artefakt-Namen bestehen.

Vertrauen und Reputation

Artefakte, die auf Maven Central veröffentlicht werden, unterliegen strikten Qualitätsanforderungen, darunter eine gültige PGP-Signatur, saubere JavaDocs und eine klare Lizenz. Dies alles steigert das Vertrauen der Nutzer in Ihre Bibliothek. Zudem kann das regelmäßige Veröffentlichen hochwertiger Artefakte Ihre Reputation in der Open-Source-Community fördern.

Automatisierte Integration und Continuous Delivery
Indem Ihre Bibliotheken zentral in Maven Central verfügbar sind, können Sie sie nahtlos in automatisierte Build-Prozesse und Continuous Delivery Pipelines integrieren. Viele Continuous Integration (CI)-Dienste wie Jenkins, GitHub Actions oder GitLab CI greifen standardmäßig auf Maven Central zurück, um Abhängigkeiten zu laden.

Voraussetzungen für die Veröffentlichung auf Maven Central

Bevor Sie ein Artefakt auf Maven Central hochladen, müssen bestimmte Anforderungen erfüllt werden:

Maven Project Object Model (POM): Ihr Projekt muss ein korrekt konfiguriertes pom.xml besitzen, das die Projekt-Metadaten, Abhängigkeiten, Entwicklerinformationen und eine Lizenz beschreibt (siehe Beispiel).

Gruppen-ID: Sie müssen eine eindeutige groupId für Ihr Projekt festlegen. Diese sollte in der Regel Ihrer Domain entsprechen (z.B. de.wenzlaff.mathe). Falls Sie keine eigene Domain besitzen, können Sie sich über den Dienst Sonatype OSSRH eine Gruppen-ID registrieren lassen.

Artefakt-ID und Versionsnumme: Die artifactId ist der Name des veröffentlichten Artefakts und sollte eindeutig sein. Zudem müssen Sie eine sinnvolle Versionsnummer verwenden, die sich an semantischer Versionierung orientiert (z.B. 1.0.0). SNAPSHOT kann nicht hochgeladen werden.

PGP-Signatur: Maven Central erfordert, dass alle Artefakte digital signiert werden. Hierzu benötigen Sie einen GPG-Schlüssel, mit dem Sie die Integrität und Authentizität Ihres Artefakts garantieren können. Siehe hier mit diesem Plugin in der pom.xml:

Und in der settings.xml das Passwort und den User:

JavaDocs und Quellen: Für jedes veröffentlichte Artefakt müssen die Java-Dokumentation und der Quellcode mitgeliefert werden. Dies ermöglicht es Entwicklern, Ihr Projekt besser zu verstehen und zu erweitern. Das geht mit diesen Plugins:

Nexus Repository Manager Account: Um Artefakte auf Maven Central hochzuladen, müssen Sie ein Konto auf Sonatype’s Nexus Repository Manager erstellen und sich authentifizieren.

Hochladen eines Artefakts nach Maven Central

1. Erstellen Sie einen GPG-Schlüssel

Zuerst benötigen Sie einen GPG-Schlüssel, um Ihre Artefakte zu signieren.
2. Erstellen oder Konfigurieren Sie Ihr Maven-Projekt

Wenn Sie Ihr Maven-Projekt erstellen, achten Sie darauf, dass das pom.xml alle Metadaten wie Lizenzinformationen, Entwicklerdaten und eine passende Beschreibung enthält. Fügen Sie außerdem Profile für die Veröffentlichung hinzu. Die URL hat sich vor ca. 2 Jahren geändert:

3. Konfigurieren Sie die POM-Datei für das Signieren

4. Erstellen Sie ein Sonatype OSSRH-Konto

Melden Sie sich bei Sonatype an und erstellen Sie ein Benutzerkonto unter. Nachdem Sie die Gruppe und das Projekt eingerichtet haben, wird Ihnen Zugriff auf das Sonatype Nexus Repository gewährt.

5. Artefakt-Build und Veröffentlichung

Sie können nun das Artefakt bauen und signieren.

Maven wird das Artefakt signieren und auf das Nexus Repository hochladen.

6. Releases auf Maven Central promoten

Nach erfolgreichem Hochladen müssen Sie Ihr Artefakt auf der Nexus-Weboberfläche promoten. Hierbei prüfen Sie, ob alle Anforderungen erfüllt sind, und geben die Veröffentlichung frei. Oder nutzen die autoPubish Funktion mit true, dann brauch man nicht noch auf die Webseite gehen, um das Artefakt freizugeben.

Das Veröffentlichen von Java-Artefakten auf Maven Central ist ein strategischer Schritt, um die Sichtbarkeit und Zugänglichkeit Ihrer Bibliothek zu erhöhen. Es erleichtert anderen Entwicklern den Zugriff und ermöglicht eine nahtlose Integration in deren Projekte. Indem Sie den vorgegebenen Prozess durchlaufen und die erforderlichen Qualitätsstandards einhalten, schaffen Sie Vertrauen in die Open-Source-Gemeinschaft und tragen zur Weiterentwicklung des Java-Ökosystems bei. Wenn der erste Upload geklappt hat, ist jeder zukünftige upload gar nicht mehr so aufwendig.

Eine Beispiel pom.xml gibt es hier. Das Beispielprojekt und alle anderen Artefakte gibt es auf Maven-Central.

Das Beispiel kann dann mit:

eingebunden werden. Die ganze pom.xml gibt es da auch.