Maven: Lokale JAR Dateien hinzufügen

Falls ihr in eure Projekte JAR Dateien einbinden wollte, welche nicht per öffentlicher oder privater Maven Repository verfügbar sind, dann könnt ihr hierfür eine lokale Repository im Projekt anlegen und die JARS von hier aus laden.

Ein Beispiel hierfür sind zum Beispiel die API Jars von enaio welcher ihr in eurem eigenen Microservice einsetzen wollt.

Repository anlegen

Zunächst erstellt ihr euch einen Repository Ordner im Projekt.
In Unserem Fall erstellen wir den Ordner /lib.

Als zweites kopiert ihr per Maven die Jar Datei in die neue Repository:

mvn deploy:deploy-file -Durl=file:///home/username/development/my-project/lib/ -Dfile=enaio-rpc-2.8.0.jar -DgroupId=com.os.ecm.rpc -DartifactId=enaio-rpc -Dpackaging=jar -Dversion=2.8.0
  • -Durl ist der Repository Pfad
  • -Dfile ist das Jar
  • -DgroupId ist die GroupId deines Jars (kann im prinzip frei gewählt werden)
  • -DartifactId ist die artifact ID deines Jars
  • -Dversion ist die Versionsnummer deines Jars

dieser Befehl legt folgende Struktur an:

  • /libs/com/os/ecm/rpc/enaio-rpc/
    • maven-metadata.xml
    • maven-metadata.xml.md5
    • maven-metadata.xml.sha1
    • 2.8.0/
      • enaio-rpc-2.8.0.jar
      • enaio-rpc-2.8.0.jar.md5
      • enaio-rpc-2.8.0.jar.sha1
      • enaio-rpc-2.8.0.pom
      • enaio-rpc-2.8.0.pom.md5
      • enaio-rpc-2.8.0.pom.sha1

pom.xml

Als nächste kann man die Repository in der pom.xml bekannt machen und das JAR als Dependency hinterlegen:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
...
  <repositories>
    <repository>
      <id>local-repository</id>
      <name>repository</name>
      <url>file://${project.basedir}/lib</url>
    </repository>
  </repositories>
  

  <dependencies>
   ...
    <dependency>
      <groupId>com.os.ecm.rpc</groupId>
      <artifactId>enaio-rpc</artifactId>
      <version>2.8.0</version>
    </dependency> 
  </dependencies>
...
</project>

Cache leeren

In meinem Fall war das Jar bereits in meinem .m2 Cache vorhanden, was zu Problemen geführt hat. In diesem Fall einfach im lokalen .m2 Ordner den entsprechenden Unterordner com/os/ecm/rpc/enaio-rpc/ löschen. Unter Linux befindet sich der .m2 Ordner üblicherweise unter /home/<username>/.m2. Unter Windows unter c:\Users\<username>\.m2.