Unterschied zwischen maven-plugins ( Montage-plugins , jar-plugins , shaded-plugins)
Ich bin ein Anfänger in maven und jetzt bin ich verwirrt mit dem Unterschied zwischen diesen maven-plugins. Ist diese alle erstellen von jar-Dateien? nun meine Fragen sind
-
was ist der Unterschied zwischen der jar erstellt, in der die einzelnen plugins.( assembly-plugin-jar-plugin, schattigen plugin)
-
Den Zweck der einzelnen plugin. ( Montage -, jar-plugin, schattigen plugin )
-
Ich weiß, auch ohne Angabe von diese plugins einmal geben mvn package wird es eine jar Ausgabe. Was ist der Unterschied von der Ausgabe jar ohne diese plugins und die Ausgabe jar mit diesen plugins?. TIA
- Das ist wirklich zu breit, zu beantworten. Werfen Sie einen Blick auf die Dokumentation zu jedem plugin, um zu sehen, was es tut. Es gibt auch Beispiele in der Dokumentation.
- IMHO, Das ist eine gute Frage. Für einen Neuling (oder viele Experten, für diese Angelegenheit) diese Wahl ist verwirrend. Und ja, haben die docs schon ausreichen, für jede/jeden etwas - es war nicht nötig, SO auf den ersten Platz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
maven-jar-plugin
: Dieses plugin bietet die Funktionen zum erstellen und signieren von Gläsern. Aber es kompiliert die java-Dateien untersrc/main/java
undsrc/main/resources/
. Es beinhaltet nicht die Abhängigkeiten von JAR-Dateien.maven-assembly-plugin
: Dieses plugin extrahiert alle dependency-JARs in raw Klassen und Gruppen Sie zusammen. Es kann auch verwendet werden zum erstellen einer ausführbaren JAR-durch die Angabe der main-Klasse. Es funktioniert in einem Projekt mit weniger Abhängigkeiten nur; für großes Projekt mit vielen Abhängigkeiten, es wird zu Java-Klassennamen Konflikt.maven-shade-plugin
: Es Pakete mit allen Abhängigkeiten in ein uber-JAR. Es kann auch verwendet werden zum erstellen einer ausführbaren JAR-durch die Angabe der main-Klasse. Dieses plugin ist besonders nützlich, wie es geht Inhalte von bestimmten Dateien anstelle von überschreiben von Umzug Klassen. Diese wird benötigt, wenn die Ressource-Dateien, die den gleichen Namen quer über die Gläser und das plugin versucht-Paket alle Ressourcen-Dateien zusammen.Finden: Vergleich:maven-plugin-jar -, Montage -, Schatten
large project with many dependencies, it will cause Java class name conflict issue.
so, wie man sich mit diesen Fällen dann?Jar-plugin
Lassen Sie uns sehen, was der folgende Befehl kann sagen.
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-jar-plugin
Es hat 3 Ziele
help
,jar
undtest-jar
. Ich glaube, Sie sind hauptsächlich daran interessiert, diejar
Ziel, das laut der Beschreibung ist die folgende:Als seitliche Anmerkung, Ausführung
mvn help:effective-pom
auf ein Projekt, mit dem die Verpackung festgelegtjar
zeigt, dass dieses Plug-in wird automatisch konfiguriert und wird ausgeführt, während derpackage
phase.Assembly plugin
Dieser dient einem anderen Zweck. Es hat 8 Tore, aber 6 von Ihnen sind veraltet. Also abgesehen von der
help
Ziel, dies lässt uns mit dersingle
Ziel.mvn help:describe -Dplugin=org.apache.maven.plugins:maven-assembly-plugin
Können Sie mit dem assembly-plugin, wenn Sie wollen, mehr zu liefern, als der Ihrem Projekt Artefakt (JAR, war, etc.), aber die Konfiguration geht in eine andere Datei.
Schatten-plugin
Die Beschreibung der wichtigsten Ziel ist ein bisschen enttäuschend.
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-shade-plugin
Sie meist wollen, verwenden Sie dieses plugin, wenn Sie möchten, um zu produzieren ein uber-jar, welches ist Ihr Artefakt in ein GLAS mit all seinen transitiven Abhängigkeiten in der it.
Im Grunde, wenn Sie den Aufbau einer Bibliothek, Sie ' ll stick mit dem Standard-JAR-plugin. Wenn Sie eine Anwendung, die Sie könnte in Erwägung ziehen, die Schatten-plugin, aber für mich ist es eine Art quick-and-dirty. Wenn uber-jar ist nicht Ihr Geschmack oder die Verteilung passt nicht in eine einzelne JAR (externe Konfiguration, nativen Abhängigkeiten, etc.) dann sollten Sie gehen für das assembly plugin.
Maven-jar-plugin erzeugt einfach eine jar-Dateien mit allen Quelldateien [.die class-Dateien kompiliert .java-Dateien] gepackt, aber ein Glas selbst kann nicht eingesetzt werden, da es viele weitere Abhängigkeiten, wie 3rd-party jar-Dateien oder eine andere Bibliothek jar-Dateien, die erforderlich sind, um die ausgeführten jar-Datei. Das, wo Maven-assembly-plugin kommt ins Bild, schafft es ein Paket von einer Erweiterung Ihrer Wahl wie .zip -, .tar, .gz ist ein voll bereitstellen-Lage, Paket mit allen Abhängigkeiten verpackt in es. Sie können auch angeben, directory-Struktur, in der assembly-plugin, das erzeugt werden soll, wenn das Paket bereitgestellt wird, auf dienen