In einigen Punkten macht die technische Projektverwaltung von Maven schon Probleme. In "Maven und das Class-Path Attribut" habe ich beschrieben, wie man mit Problemen mit eben diesem Class-Path in Manifestdateien umgehen kann. Ein weiteres Problem ist die Verwendung von Projekten, die wiederum aus unterschiedlichen Projekten zusammen gebaut werden. Axis vom Apache ist ein solches. Es baut auch unterschiedlichsten Projekte wie log4j oder commons-discovery auf. Wie legt man diese Projekte in einem Maven-Repository an? Werden alle Artefakte in einer Gruppe, z.B. axis gesammelt? Oder werden die Artefakte auf unterschiedliche Gruppen verteilt? Und wenn man sie verteilt, wie werden sie dann für das Konfigurationsmanagement wieder gefunden?
Ich habe mich für die zweite Variante entschieden. Dies vor dem Hintergrund, dass es Maven, beim build mehrerer zusammengehöriger Projekte über den Reaktor, erlaubt, einfach Abhängigkeitsinkonsistenzen (Versionskonflikte) zu finden. Diese werden in einen Report geschrieben, den der Konfigurationsmanager leicht überwachen kann. Sind die Artefakte nicht in der gleichen Gruppe, dann werden diese Versionskonflikte nicht gefunden.
Das Problem des Wiederfindens haben wir durch eine Hilfsdatei gelöst, die zusätzlich zu den Axis-Artefakten, im jars Verzeichnis abgelegt wird und für die entsprechenden Versionen ein depedencies Snippet bereit stellt. Derjenige, der ein neues Projekt für z.B. Axis 1.2.1 aufsetzen muss, ist es ausreichend dieses Snippet in das <dependencies>-Element der project.xml zu kopieren.
