Unterschied zwischen dem maven-scope kompilieren und zur Verfügung gestellt für GLAS Verpackung
Was ist der Unterschied zwischen dem maven-scope compile
und provided
als Artefakt ist gebaut wie ein Krug? Wenn es KRIEG gab, würde ich verstehen - das Artefakt enthalten sein würden oder nicht in WEB-INF/lib. Aber bei GLAS ist es egal - Abhängigkeiten sind nicht enthalten. Sie haben, um über die classpath, wenn deren Umfang compile
oder provided
. Ich weiß, dass provided
Abhängigkeiten, die nicht transitiv sind - aber es ist nur ein Unterschied?
InformationsquelleAutor emstol | 2011-07-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Maven Doc:
Rückblick:
JAR packaging
Kontext. Maven doc nicht zu erwähnen, es. Ich benutze Maven für eine Weile, aber ich habe gerade schon gefragt, mich darüber 🙂 So es scheint, dass inJAR packaging
Zusammenhang gibt es keinen Unterschied zwischencompile
undprovided
(außer Abhängigkeit übergang). Bin ich im Recht?Und "classpath-Verfügbarkeit", ja.
was ist gemeint mit "in der Erwägung, dass kompilieren Rahmen ist verfügbar in alle klassenpfade."?
kompilieren,testen,ausführen Zeit?
Ich denke, "NICHT-Transitive" ist der große Haken hier. Da die dependency-Hölle ist etwas, das die Entwickler vor sehr Häufig und bot Freiraum verhindert, dass es geht und messing mit anderen Versionen ist von entscheidender Bedeutung.
InformationsquelleAutor Jacob
Hier ist die Referenz.
kann ich, sofern ich verweisen auf ein weiteres GLAS eingesetzt, die auf dem gleichen application server???
So klar zu sein, sofern die Abhängigkeit nicht, werden dem classpath Hinzugefügt, wenn
mvn exec:java
ausgeführt wird, sondern eine kompilierte Abhängigkeit ist.Ich fragte diese Frage, stackoverflow.com/questions/37360132/... Das problem wurde gelöst, indem Umfang von zur Verfügung gestellt zu kompilieren. Aber ich sehe keinen Unterschied zwischen jar kompiliert mit "vorgesehen" Rahmen und Glas compiliert mit "compile" - scope. Können Sie erklären, warum?
Lesen Sie die erste Antwort : coderanch.com/t/502091/tools/difference-maven-compile-scope
InformationsquelleAutor Owen Cao
Hier ist der kurze auf allen unterstützten Abhängigkeiten ( Quelle maven doc )
kompilieren
Dies ist der default-scope verwendet, wenn keine angegeben ist. Kompilieren, Abhängigkeiten gibt es in allen klassenpfade des Projekts. Außerdem, diese Abhängigkeiten weitergegeben werden an die abhängigen Projekte.
zur Verfügung gestellt
Dies ist ähnlich wie kompilieren, aber zeigt an, dass Sie erwarten, dass die JDK oder einen Behälter bereitzustellen, die Abhängigkeit zur Laufzeit. Zum Beispiel beim erstellen einer web-Applikation für die Java Enterprise Edition, wäre die Abhängigkeit von der Servlet-API und die zugehörigen Java-EE-APIs Umfang zur Verfügung gestellt, weil der web-container stellt diese Klassen. Dieser Bereich ist nur verfügbar auf der Kompilations-und test-Klassenpfad, und ist nicht transitiv.
runtime
Dieser Bereich zeigt an, dass die Abhängigkeit ist nicht erforderlich für die Zusammenstellung, aber ist für die Ausführung. Es ist in der Laufzeit und test klassenpfade, aber nicht den compile classpath.
test
Dieser Bereich zeigt an, dass die Abhängigkeit ist nicht erforderlich bei normaler Nutzung der Anwendung, und ist nur für die test-Zusammenstellung-und ausführungsphasen. Dieser Bereich ist nicht transitiv.
- system
Diesem Rahmen ist ähnlich, außer, dass Sie haben, um die JAR-Datei, die es enthält, ausdrücklich. Das Artefakt ist immer verfügbar und ist nicht blickte in ein repository.
importieren (nur verfügbar in der Maven-2.0.9 oder höher)
Dieser Bereich wird nur unterstützt, auf eine Abhängigkeit vom Typ pom in den Abschnitt. Es zeigt die Abhängigkeit ersetzt werden, mit der effektiven Liste der Abhängigkeiten in der angegebenen POM ' s Abschnitt. Da Sie ersetzt werden, Abhängigkeiten im Umfang von import nicht tatsächlich an die Begrenzung der Transitivität einer Abhängigkeit.
InformationsquelleAutor Indra Uprade
Wenn Sie planen, erzeugen eine einzige JAR-Datei, die mit allen seine Abhängigkeiten (die typische xxxx-all.jar), dann vorgesehenen Bereich Fragen, da die Klassen in diesem Umfang nicht sein Paket in der resultierenden JAR.
Siehe maven-assembly-plugin für mehr Informationen
Die OP Verwirrung ist klar aufgelöst, wenn Sie Paket mit
maven-assembly-plugin
, interessant, dass die meisten Antworten stimmten nicht, es zu erwähnen.Ich verstehe das nicht beantworten. Es sieht eher aus wie ein Kommentar.
InformationsquelleAutor jfcorugedo
Zur Verfügung stellen, in die Klasse Pfad, fügen Sie diese nicht in Abhängigkeit der definitiven jar, ob es normal ist jar; aber das hinzufügen dieser jar-in-jar-falls der jar ist ein Behälter (zum Beispiel ausführbare jar-Datei)
Abhängigkeit wird zur Laufzeit verfügbar-Umgebung, so don ' T fügen Sie diese Abhängigkeit in keinem Fall; auch nicht in eine einzige jar (D. H. ausführbare jar-Datei usw.)
InformationsquelleAutor Vijay
Für eine jar-Datei, der Unterschied liegt im classpath im MANIFEST aufgeführten.MF-Datei in die jar, wenn addClassPath auf true gesetzt wird in der maven-jar-plugin-Konfiguration. 'kompilieren' Abhängigkeiten erscheinen in der manifest 'zur Verfügung gestellt' Abhängigkeiten nicht.
Einer meiner Haustier ärgert ist, dass diese beiden Worte sollte die gleiche angespannt. Entweder kompiliert und zur Verfügung gestellt, oder kompilieren und bereitstellen.
InformationsquelleAutor Rick