Nachdem ich gestern einen Artikel in einem bekannten Magazin gelesen habe, habe ich nunmehr nicht mehr die Qual der Wahl...
Maven ist eines der besten technischen Projektverwaltungstools welches ich kenne. In den letzten Tagen konnte ich mich wieder einmal von der Mächtigkeit dieses Werkzeuges überzeugen. Das Problem lag diesmal im Namensschema für JAR-Dateien, welches maven vorschlägt. Dieses besteht aus den Teilen name-version.jar. Dabei ist es möglich die Version auch weg zu lassen. Allerdings hat man dan wiederum das Problem, dass gerade die Abhängigkeiten nicht ehr sauber aufgelöst werden können. An sich ist das kein Problem. Man nimmt einfach eine Softwareversion und nennt die JAR-Dateien derart um, dass man ihnen eine Versionsnummer verpasst. Aus jini-core.jar wird zum Beispiel jini-core-2.0.2.jar.
Problematisch wird diese Bezeichnung dann, wenn in einer weiteren JAR-Datei mittels des Class-Path Attributes in der Manifestdatei auf jini-core.jar verwiesen wird. Durch die Umbenennung wird die korrekte Datei dann von der Laufzeitumgebung nicht mehr gefunden. Alternativ kann man den Inhalt aller Class-Path Attribute anpassen. Allerdings ist auch dieses vorgehen fehleranfällig, da nicht immer alle Fremdbibliotheken, manchmal schon aus rein lizenzrechtlichen Gründen, geändert werden können.
In einem solchen Fall sollte man die groupId des <dependencies> Bereichs der project.xml ausnutzen und jede Distribution in eine eigene Gruppe legen. In diesem Fall die Gruppe jini-2.0.2. Der <dependencies> Bereich würde dann ungefähr so aussehen:
<dependencies>
<dependency>
<groupId>jini-2.0.2</groupId>
<artifactId>jini-core</artifactId>
</dependency>
...
</dependencies>
Ein Problem sollte bei diesem Vorgehen allerdings nicht verschwiegen werden. Die Abhängigkeitenprüfung, die sich z.B. über den Reaktor erreichen lässt kann dann eventuelle Versionskonflikte nicht mehr automatisch erkennen. Dies muss dann wieder händisch erledigt werden.
