Tatsächlich löst Maven keine transitiven Abhängigkeiten eines Krieges auf, der als Abhängigkeit eines Projekts deklariert wurde. Es gibt tatsächlich ein Problem, MNG-1991 , aber es wird in Maven 2.x nicht gelöst, und ich bin nicht sicher, ob ich nicht weiß, ob Overlays es ermöglichen, dieses Problem zu umgehen. Mein Verständnis der vorgeschlagenen Lösung besteht darin, die Abhängigkeiten zu duplizieren, beispielsweise in einem Projekt vom Typ pom.
(BEARBEITEN: Nach einigem Graben fand ich in diesem Thread etwas Interessantes , das ich unten zitiere:
Ich habe im letzten Monat bei der Entwicklung des AppFuse-Projekts mitgeholfen, bei dem wir die War-Overlay-Funktion im Maven War-Plugin intensiv nutzen. Es ist eine wirklich raffinierte Funktion!
Um maximale Leistung mit Kriegsüberlagerungen zu erzielen, habe ich das Warpath-Plugin entwickelt, mit dem Projekte Kriegsartefakte als vollwertige Abhängigkeiten verwenden können. In Kürze:
1) Der Inhalt des Verzeichnisses / WEB-INF / classes in den Kriegsabhängigkeitsartefakten kann im Klassenpfad des Projekts für normale Kompilierungsaufgaben usw. enthalten sein.
2) Transitive Abhängigkeiten von den Artefakten der Kriegsabhängigkeit werden für andere Plugins verfügbar, z. B. Kompilieren und Ohr - so müssen beim Erstellen von Skinny Wars nicht mehr alle Abhängigkeiten berücksichtigt werden!
Das Plugin wurde nun in den letzten Monaten aktiv im AppFuse-Projekt verwendet, und ich denke, es befindet sich an einem Punkt, an dem es sowohl verwendbar als auch stabil ist. Wäre das War Plugin Team daran interessiert, die Warpath-Funktionalität in das War Plugin aufzunehmen? Es scheint der natürlichste Ort zu sein, um es zu beherbergen.
Ich habe also keine Erfahrung damit, aber das Maven Warpath Plugin sieht tatsächlich gut und einfach aus und ist im zentralen Repo verfügbar. Um es zu verwenden, fügen Sie das folgende Plugin-Konfigurationselement in Ihre pom.xml
Datei ein:
[...]
<build>
<plugins>
<plugin>
<groupId>org.appfuse</groupId>
<artifactId>maven-warpath-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>add-classes</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
Fügen Sie die im Klassenpfad enthaltenen Kriegsabhängigkeiten als Kriegspfadtypabhängigkeiten hinzu :
[...]
<dependencies>
<dependency>
<groupId>org.appfuse</groupId>
<artifactId>appfuse-web</artifactId>
<version>2.0</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.appfuse</groupId>
<artifactId>appfuse-web</artifactId>
<version>2.0</version>
<type>warpath</type>
</dependency>
</dependencies>
[...]
Es werden sowohl der Kriegstyp als auch der Kriegspfad-Abhängigkeitstyp benötigt: Der Kriegstyp wird vom Maven-Kriegs-Plugin für die Kriegsüberlagerung verwendet, der Kriegspfad-Typ wird vom Kriegspfad-Plugin verwendet, um die richtige Liste von Artefakten für die Aufnahme in den Projektklassenpfad zu ermitteln.
Ich würde es versuchen.)