Ich habe ein Teilprojekt mit einer Kriegsspezifikation, die so aussieht:
%Vor%Funktioniert großartig. Erstellt eine einzelne, fette War-Datei, die in Tomcat bereitgestellt werden kann. Problem ist, wenn ich auf TomEE und JBoss versetze, laufe ich auf Konflikte (dh mit Javax Servlet, Jersey, usw.). Also möchte ich eine Reihe von Gläsern von der Kriegsführung ausschließen. Ich habe mir die Gradle-Kriegsdokumentation angesehen, und es sieht so aus, als müsste ich Ausschlüsse dafür verwenden. Ich habe es auf zwei verschiedene Arten versucht, und die Gläser sind nicht vom Krieg ausgeschlossen:
%Vor%Dies ist in einem Teilprojekt (Karyon-Beispiele) innerhalb des NetFlix / Karyon-Projekts, das auf GitHub gehostet wird. Die Abhängigkeiten im Teilprojekt sehen folgendermaßen aus:
%Vor%Und ich möchte es vermeiden, Dinge wie Kompilierungs- oder Laufzeitabhängigkeiten zu bearbeiten, besonders in anderen Dateien und Unterprojekten. In der Tat sind die Gläser, die ich oben ausschließen möchte, gutartig, wenn sie mit Anlegesteg und normalem Tomcat laufen.
Ich möchte diese Jars einfach ausschließen, ohne die Build-Skripte zu verkomplizieren. Was vermisse ich?
Danke
Der offensichtliche Weg ist, die Abhängigkeiten, die Sie nicht in Ihrem Krieg haben möchten, von der compile
-Konfiguration zu providedCompile
und von runtime
zu providedRuntime
zu verschieben. Die bereitgestellten Konfigurationen werden Ihrem Build hinzugefügt, wenn das War-Plugin angewendet wird.
Noch eine Anmerkung zu Ihrem obigen Ausschnitt: Ich denke, der Ausschluss funktioniert nicht, weil Sie den Zielpfad in Ihren exclude-Anweisungen referenzieren. Stattdessen sollten Sie ihn nur mit /servlet-api-2.5.jar
referenzieren.
Tags und Links java gradle jar war apache-tomee