Minimieren ein Uber Jar korrekt Mit Schatten-Plugin
Ich bin mit dem Maven-Shade-Plugin zum erstellen einer lauffähigen Uber-jar.
Nach dem letzten Bild auf auf dieser Seite, die Größe des Glases kann minimiert werden, indem Sie:
<configuration>
<minimizeJar>true</minimizeJar>
</configuration>
Aber diese Funktion berücksichtigt auch nicht die Klassen, die deklariert werden in der log4j.Eigenschaften-Datei. Also z.B. org.apache.log4j.appender.TimeAndSizeRollingAppender
ist nicht enthalten in der Uber-jar, auch wenn es deklariert in der log4j.Eigenschaften-Datei.
Ich glaube, ich werde das gleiche problem mit der Feder. Wenn mein code bezieht sich nur auf Eine Schnittstelle, und mein Frühling-Datei enthält eine Instanziierung der Klasse B implementiert A, dann B kann nicht Hinzugefügt werden, um das Glas, da es nicht in den code.
Wie kann ich dieses problem lösen?
- Alsmot, aber nicht ganz, ein Duplikat der stackoverflow.com/questions/8698814/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Funktionalität wurde Hinzugefügt, um die version 1.6 von der maven-shade-plugin (nur freigegeben). minimizeJar jetzt nicht auf die entfernen-Klassen, die speziell aufgenommen mit Filter. Beachten Sie, dass darunter auch einige der Artefakt-Klassen in einem filter ausgeschlossen wird, nicht angegeben-Klassen für das Artefakt, so werden Sie sicher, dass alle Klassen, die Sie benötigen.
Hier ein Beispiel für ein plugin config:
Nur bestimmte Klassen, fügen Sie Sie als umfasst die Verwendung von Pfad Schrägstriche in den Namen der Klasse in einem filter (wieder, nicht im Lieferumfang enthalten-Klassen werden automatisch ausgeschlossen).
<minimizeJar>true</minimizeJar>
. Allerdings, wenn Sie Ihren code oder eine depdendency verwendet dynamische laden von Klassen, es gibt keine Möglichkeit für maven-shade-plugin erkennen Sie eine Abhängigkeit auf die dynamisch geladenen Klassen, so dass Sie muss manuell schließen diejenigen ein, die Abhängigkeiten mit filter umfasst, wie hier gezeigt. Wenn Sie nicht möchten, dies zu tun, verwenden Sie<minimizeJar>false</minimizeJar>
- und nur um die größeren schraffierten Glas. Das sind Ihre Entscheidungen.