Java, Maven

Eigenen Repository Server in Maven einrichten

Um sich mit einem eigenen Maven Repository Server (z.B. Nexus) zu verbinden, der auch noch mit Zugangsdaten (Credentials) abgesichert ist, muss man in der lokalen Maven Configuration folgende Dateien erstellen und Einträge machen:

In deinem lokalem Maven-Ordner (%HOME%-folder) den versteckten Ordner .m2 finden.

Zum Beispiel unter Windows:

  • ‚C:\Users\%username%\.m2‘

oder unter Mac OS X:

  • ‚/Users/%username%/.m2‘

bzw. Unix/Linux

  • ‚/home/%username%/.m2‘

settings-security.xml (Master Passwort für User Credentials)

<settingsSecurity>
  <master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
</settingsSecurity>

Um das Master-Passwort zu generieren ruf folgendes Kommando auf: ‚mvn –encrypt-master-password _password_‘

settings.xml (User Credentials für Maven Repository)

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                     http://maven.apache.org/xsd/settings-1.0.0.xsd">
 <servers>
   <server>
     <id>my.server</id>
     <username>foo</username>
     <password>{COQLCE6DU6GtcS5P=}</password>
   </server>
 </servers>
</settings>

Um das lokale User Passwort zu generieren rufe dann dieses Kommando auf: ‚mvn –encrypt-password _password_‘.

Man kann auch nur die ’settings.xml‘ anlegen mit Klartext Passwort (dies ist natürlich UNSICHER).

Bitte beachtet, dass ihr euer _passwort_ natürlich auf der Konsole eingebt und es somit natürlich im Klartext in der Konsolen-History Datei landet. Also nutzt wie immer am Besten für jeden Server/Service ein anderes Passwort und löscht den Eintrag aus der Konsolen-History Datei raus.

Die dazugehörige Maven POM XML Datei muss dann zusätzlich diese Einträge besitzen:
pom.xml

<!-- Dependency to project from repo -->
<dependencies>
   ...
   <dependency>
       <groupId>com.companyname.projectname</groupId>
       <artifactId>mvn-module-name</artifactId>
       <version>0.0.1-SNAPSHOT</version>
   </dependency>
</dependencies>
...
<!-- Link to repository server -->
<repositories>
     <repository>
         <id>my.server</id>
         <url>http://mvn.companyname.com/nexus/content/repositories/snapshots/</url>
     </repository>
 </repositories>

Danach sollte mit ‘mvn clean install’ die Abhängigkeit (dependency) gefunden werden, um das Projekt ordentlich zu bauen.

Für weitere Fragen und Anmerkungen bin ich wie immer offen.

Standard