Ich schreibe ein Projekt für Abnahmetests und aus verschiedenen Gründen hängt dies von einem anderen Projekt ab, das als WAR verpackt ist. Ich habe es geschafft, die WAR mit dem Maven-Dependency-Plugin zu entpacken, aber ich kann mein Projekt nicht dazu bringen, das Entpackte einzuschließen WEB-INF/lib/*.jar
und WEB-INF/classes/*
in den Klassenpfad aufzunehmen, sodass der Build fehlschlägt. Gibt es eine Möglichkeit, diese Dateien in den Klassenpfad aufzunehmen, oder gibt es eine bessere Möglichkeit, von einem WAR abhängig zu sein?
Danke vielmals.
maven
maven-2
war
maven-dependency-plugin
deelo55
quelle
quelle
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, obich 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 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:Fügen Sie die im Klassenpfad enthaltenen Kriegsabhängigkeiten als Kriegspfadtypabhängigkeiten hinzu :
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.)
quelle
Verwenden Sie Overlays . Erstens muss Ihr Testprojekt auch eine Verpackung haben
war
.Deklarieren Sie die Abhängigkeit des Kriegsprojekts, das Sie testen möchten:
Konfigurieren Sie dann das Maven-War-Plugin-Overlay:
Im obigen Beispiel im Testprojekt überschreibe ich Konfigurationsdateien für Webquellen (wie Kontext usw.).
EDIT: Diese Lösung wurde nicht mit Maven 3 getestet.
quelle
Guter Punkt, Justin. Das brachte mich dazu, mein Problem tatsächlich zu lösen, nämlich: einen Krieg in eine Versammlung aufzunehmen UND alle seine transitiven Abhängigkeiten einzubeziehen. Ich konnte die Kriegsabhängigkeit nicht als 'jar' duplizieren, wie Sie vorgeschlagen haben, da das Assembly-Plugin kein jar finden würde, auf das diese groupId / artefactId verweist, aber
funktioniert! Der Krieg und seine transitiven Abhängigkeiten sind nicht in der Versammlung enthalten. Um die (jetzt auch erscheinende) POM-Datei auszuschließen, musste ich ein Ausschlusselement wie das folgende hinzufügen:
in meine Assembly.xml-Datei.
Ich denke, dies könnte auch eine Problemumgehung für die ursprüngliche Frage dieses Threads sein.
quelle
Wenn Sie die Abhängigkeit vom Kriegsprojekt als JAR-Abhängigkeit auflisten, scheint sie die erforderlichen Jars / Ressourcen aufzunehmen. Ich benutze Maven 2.2 + m2eclipse.
quelle