2017-02-07 6 views
1

Ich benutze Maven, um eine Ear-Datei mit zwei EJBs und ein paar Web-Anwendungen zu erstellen. Ich würde gerne dünne Kriege benutzen, weil wahrscheinlich mehr Kriege folgen werden.Maven: Lass SkinnyWars einige Bibliotheken erhalten

Wie ich verstanden, die Folgenden werden alle * .jar-Dateien entfernen (außer ejb Gläser) aus dem WEB-INF/lib Verzeichnis aller Kriegs Dateien:

<dependencies> 
    <dependency> 
    <groupId>my.domain</groupId> 
    <artifactId>project</artifactId> 
    <version>${project.version}</version> 
    <type>war</type> 
    </dependency> 

    <!-- Scope: Provided for skinnies. --> 
    <dependency> 
    <groupId>my.domain</groupId> 
    <artifactId>project</artifactId> 
    <version>${project.version}</version> 
    <type>pom</type> 
    </dependency> 
</dependencies> 

[..] 

<configuration> 
     <version>7</version> 
     <defaultLitBundleDir>lib/</defaultLitBundleDir> 
     <skinnyWars>true</skinnyWars> 
[..] 

Das Problem, das ich habe ist, dass offensichtlich Entfernen Sie auch alle webjars. Webjars sind Web-Bibliotheken (CSS, JS, etc.), die im Inneren JAR-Dateien wie folgt verpackt werden:

Mit jedem Servlet 3 kompatibelen Containern, die WebJars, die in dem WEB-INF/lib sind, werden automatisch gemacht verfügbar als statische Ressourcen. Dies funktioniert, weil alles in einem Verzeichnis META-INF/resources in einer JAR in WEB-INF/lib automatisch als statische Ressource ausgesetzt wird.

Quelle: http://www.webjars.org/documentation#servlet3

Ich mag diese Idee. Jetzt, wenn alle Jars auf myear!/Lib/webjar verschoben werden, werden die enthaltenen Dateien nicht mehr belichtet. .

Wenn es eine andere Lösung ist, ich würde gerne sehen, Ihre Eingabe :-(

Ich habe nicht eine Option für skinnyWars zu nicht ausschließen, bestimmte Bibliotheken (: wie org.webjars) gefunden

+0

Nein, es werden nicht alle JARs aus dem WAR entfernt. Nur diejenigen, die als Abhängigkeit im EAR-POM angegeben wurden. Siehe http://maven.apache.org/plugins/maven-ear-plugin/examples/skinny-wars.html – Tunaki

+0

Ahh okay. Ich habe den Krieg nur mit Abhängigkeit wieder aufgenommen: type = pom, wegen des DRY-Prinzips. Wie auch immer, ich fand eine andere Lösung und postete sie in einem Moment. – Ben

Antwort

0

Also, es gab eine einfache Lösung.Wie Sie aus meiner aktualisierten Antwort sehen, hatte ich die (fast) gleiche Abhängigkeit der WAR-Datei zweimal: Einmal als type=war, eine andere als , also alle Abhängigkeiten waren enthalten das Ohr und entkleidet vom Krieg

Nun könnte ich gerade ma Ich werde die shared libraries dort hinstellen, aber ich war thinking of DRY. Also wollte ich mit der erwähnten Lösung gehen. Scheint etwas hacky, funktioniert aber einwandfrei.

Aber einige Momente später, klickte ich auf die wrong link in the webjars documentation for Servlet2, die ich nicht verwende.

Es funktioniert mit einer anderen Abhängigkeit, die nur aus einem Servlet besteht. Dieses Servlet überschreibt Anforderungen an die entsprechenden Dateien in META-INF/resources. Ich dachte, das könnte auch für meine Situation funktionieren.

Also habe ich die Abhängigkeit in der Dokumentation zu servlet2 aufgenommen und die entsprechenden Teile zur Datei web.xml hinzugefügt. Und es funktioniert nicht wie erwartet.

Verwandte Themen