Wie können Artifacte nach Maven Central (Nexus) mit einem Mac hochgeladen werden?

Wie können Artifacte wie Jars usw. in das Nexus Maven Central Repository mit einem Mac (Windows analog) hochgeladen werden?

Das geht in 4 Schritten, die hier am Beispiel von de.wenzlaff.dump1090 beschrieben werden.

Einen Atlassian Account und Jira Ticket anlegen

Zuerste benötigen wir einen Accout bei Atlassian den wir hier beantragen können. Evl. haben wir ja auch schon einen.

Dann müssen wir ein Jira Ticket mit „Create Issue“ erstellen, um eine eindeutige GroupId (z.B. de.wenzlaff) die es noch nicht gibt, zu erhalten, hier ein Beispiel für den Jira Ticket Antrag:

Ticket erstellen

Wenn der Mitarbeiter das freigeschaltet hat (das kann etwas dauern), haben wir eine GroupId reserviert.

PGP/GPG Key erstellen und auf Keyserver hochladen

Nun müssen wir für genau die E-Mail Adresse, die wir zur Anmeldung verwendet haben, eine pgp Key erzeugen und diesen auf eine Keyserver hochladen. Das geht mit:

auf der Konsole. Dann einen PGP Key mit RSA/RSA und 2048 Bit Größe wählen der nicht abläuft. Dieser Key muss dann noch auf den Keyserver hochgeladen werden mit:

Dann ein paar Minuten warten, damit der Key sich auf alle Key-Server verteilen kann. Über die GUI der Key-Server kann man ja mal nach dem Key suchen.

Projekt pom.xml und settings.xml anpassen

Die /Users/BENUTZER/.m2/settings.xml anpassen, mit der Username, Keynummer und dem Passwort z.B.:

Wichtig ist auch der Pfad zu PGP, der bei mir auf dem Mac /usr/local/bin/gpg ist.

Die pom.xml muss mit dem PGP Plugin, Javadoc Plugin, Source Plugin, Staging Plugin und den Servern eingestellt werden, da nicht nur der Binäre Code hochgeladen wird, sondern auch der Quellcode und der Javadoc. So das alles beisammen ist.

Es können nur Release Versionen hochgeladen werden, also kein -SNAPSHOT in der Version der pom.xml eintragen.

Hier ein Beispiel:

Für die Fehlersuche hilft das Maven Goal:

Das zeigt die pom.xml an wie sie effektiv sich ergibt. Wer noch Parameter für das PGP Plugin braucht, kann hier nachschauen.

Artifacte hochladen mit dem Nexus-Staging-Maven-Plugin

Hochladen mit dem Maven Goal (des Nexus Staging Maven Plugin):

und nach einigen Minuten Wartezeit ist das Artifact auf Maven Central hochgeladen:

bildschirmfoto-2016-11-04-um-12-58-51

Habe ich noch was wichtiges vergessen?

Weitere Infos gibt es bei Sonatype und hier (engl.).