Maven Repository auf Sourceforge


Projektabhängigkeiten

Entwickelt man ein Software-Projekt, kommt man wie ich zu dem Punkt, an dem die eigene Software von fremden Bibliotheken abhängig ist. Im Falle von TrayRSS ist das zum Beispiel: hibernate, jdom, rom, junit, log4j. Lauter namhafte Bibliotheken, die auch in den öffentlichen Repositories von Maven verfügbar sind. TrayRSS setzt seit kurzem auf Maven um alle Abhängigkeiten zu sammeln. Doch TrayRSS setzt auch auf Bibliotheken die vielleicht weniger bekannt sind:

Leider sind beide Librarys in keinem Repository vertreten, sodass diese Abhängigkeiten nicht ohne weiteres über Maven aufgelöst werden können.

Damit es nun einem dem Projekt Fremden dennoch möglich ist den Code aus dem Versionierungssystem beziehen und das Projekt zu bauen, kann man ihm natürlich die Bibliotheken oder die Links dazu zur Verfügung stellen. So ist jeder für sich in der Lage die fehlenden Sourcen nachzuziehen und manuell ins lokale Repository zu laden. Ein Aufwand, der dank den Möglichkeiten eines eigenen Webspaces, wie ihn auch Sourceforge bietet, vermieden werden kann.

Aufbau eines Maven Repository

Ein Maven Repository ist eigentlich nichts anderes als ein Haufen Ordner mit ein paar Dateien, die nach folgendem Schema aufgebaut sind:

/gruppe/artefakt/version/artefakt-version.jar

Dabei entspricht die Gruppe den Regeln, die wir schon von Java Packages kennen. Jedes Unterpaket getrennt durch einen Punkt entspricht einem eigenen Verzeichnis. Der Bezeichner Artefakt entspricht der ArtefaktID welches im POM der jeweiligen Bibliothek definiert ist. Versionsnummer und Artefakt kombiniert ergibt die Benennung des Jar Files, welches darin enthalten ist.

Für die Auflösung der Abhängigkeiten des jeweiligen Artefakts liegt neben der Jar Datei auch eine POM Datei auf, in der die entsprechenden Informationen bereitgestellt werden. Beispielhaft der Inhalt einer solchen POM Datei:

<?xml version="1.0" encoding="ISO-8859-1"?>
  <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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>at.nullpointer</groupId>
  <artifactId>paketname</artifactId>
  <version>0.0.1</version>
  <packaging>jar</packaging>
  <name>paketname</name>
  <description>
    Beschreibung des Pakets
  </description>

  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.4.3</version>
      <type>jar</type>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

Hier lässt sich auch die Information zur Ordnerstruktur hervorragend auslesen.

Zusätzlich können noch diverse zusätzliche Datein vorhanden sein um zB die md4 Checksum zu verifizieren oder ähnliches.

Internes Repository im Projekt Web

TrayRSS ist ein Open Source Projekt und wird auf Sourceforge gehostet. Damit wir nun unsere Bibliotheken allen Usern zur Verfügung stellen können greifen wir auf die Möglichkeiten von Sourceforge zurück. Hier wird unter anderem Webspace zum Hosten der Projektseite angeboten, auf den man projektrelevante Daten ablegen kann. Also auch unser Repository.

Wie man sich über SFTP dorthin verbindet wird in folgendem Wikieintrag von Sourceforge aufgezeigt: http://sourceforge.net/apps/trac/sourceforge/wiki/Project%20web

SFTP fähige Clients unter Windows sind z.B. WinSCP und Filezilla. Wenn noch nicht installiert findet man unter Linux ein entsprechendes Commandline Tool in der Paketverwaltung der bevorzugten Distribution.

Nun wird einfach ein Verzeichnis unter htdocs angelegt z.B. mit dem Namen repository. In dieses Verzeichnis spielen wir nun wie oben dargestellt eine entsprechende Maven Verzeichnisstruktur ein.

Hier die Beispielhafte Verzeichnis- und Dateistruktur für jNotification:

repository
----de
--------jutzig
------------jnotification
----------------0.3
--------------------jnotification-0.3.jar
--------------------jnotification-0.3.pom

Zugang zum Repository

Dann fehlt nur noch ein Eintrag ins POM des Projektes nach folgendem Beispiel:

<repositories>
  <repository>
    <id>projekt-repository</id>
    <name>projekt Repository</name>
    <url>http://projekt.sourceforge.net/repository/</url>
  </repository>
</repositories>

Nun noch die Abhängigkeiten ganz normal in Maven eingetragen und Maven kann diese nun z.B. mit mvn eclipse:eclipse aus dem Internen Repository auslesen und das Projekt erfolgreich bauen.

Ähnliche Artikel:

Ein Gedanke zu „Maven Repository auf Sourceforge“

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>