it-swarm.com.de

Wozu dient <scope> unter <dependency> in pom.xml?

In der Dokumentation http://maven.Apache.org/surefire/maven-surefire-plugin/examples/testng.html können wir <scope>-Tag unter <dependency> sehen. 

Was ist das und wie können wir es für den Testlauf verwenden?

137
TDHM

Das <scope>-Element kann 6 Werte annehmen: Compile, bereitgestellt, Laufzeit, Test, System und einführen.

Dieser Bereich wird verwendet, um die Durchlässigkeit einer Abhängigkeit zu beschränken und auch den Klassenpfad zu beeinflussen, der für verschiedene Build-Tasks verwendet wird.

kompilieren

Dies ist der Standardbereich, der verwendet wird, wenn keiner angegeben ist. Kompilierabhängigkeiten sind in allen Klassenpfaden eines Projekts verfügbar. Darüber hinaus werden diese Abhängigkeiten an abhängige Projekte weitergegeben.

unter der Voraussetzung

Dies ähnelt der Kompilierung, weist jedoch darauf hin, dass Sie erwarten, dass das JDK oder ein Container die Abhängigkeit zur Laufzeit bereitstellt. Wenn Sie zum Beispiel eine Webanwendung für Java Enterprise Edition erstellen, legen Sie die Abhängigkeit von der Servlet-API und den zugehörigen Java EE-APIs auf den angegebenen Bereich fest, da der Webcontainer diese Klassen bereitstellt. Dieser Bereich ist nur für den Kompilierungs- und Testklassenpfad verfügbar und ist nicht transitiv.

Laufzeit

Dieser Bereich zeigt an, dass die Abhängigkeit nicht für die Kompilierung erforderlich ist, sondern für die Ausführung. Es befindet sich in den Laufzeit- und Testklassenpfaden, nicht jedoch im Kompilierungsklassenpfad.

Prüfung

Dieser Bereich zeigt an, dass die Abhängigkeit für die normale Verwendung der Anwendung nicht erforderlich ist und nur für die Testkompilierungs- und Ausführungsphasen verfügbar ist.

System

Dieser Geltungsbereich ähnelt dem bereitgestellten, mit der Ausnahme, dass Sie die JAR-Datei angeben müssen, die ihn explizit enthält. Das Artefakt ist immer verfügbar und wird nicht in einem Repository nachgeschlagen.

import (nur in Maven 2.0.9 oder höher verfügbar)

Dieser Bereich wird nur bei einer Abhängigkeit des Typs pom im Abschnitt verwendet. Es gibt an, dass das angegebene POM durch die Abhängigkeiten in diesem POM-Abschnitt ersetzt werden soll. Da sie ersetzt werden, sind Abhängigkeiten mit einem Importumfang nicht an der Begrenzung der Transitivität einer Abhängigkeit beteiligt.

Um den zweiten Teil Ihrer Frage zu beantworten:

Wie können wir es für den Testlauf verwenden?

Beachten Sie, dass der Bereich test die Verwendung von Abhängigkeiten nur für die Testphase ermöglicht.

Lesen Sie die Dokumentation für vollständige Details.

210
Ortomala Lokni

Sechs Abhängigkeitsbereiche in einer Zeile:

  • kompilieren : Standardeinstellung
  • bereitgestellt : von JDK oder einem Container zur Laufzeit
  • Laufzeit : nicht erforderlich für die Kompilierung
  • test : Wird nur während der Tests verwendet
  • system : wird lokal bereitgestellt
  • import : Nur in Maven 2.0.9 oder höher verfügbar
7
Premraj

fügte gute Bilder mit Erklärungen hinzu

 enter image description here

 enter image description here

5
vaquar khan

Ein Bereichs-Tag wird immer verwendet, um die transitiven Abhängigkeiten und die Verfügbarkeit des JAR auf Klassenpfadebene zu begrenzen. Wenn wir keinen Bereich angeben, funktioniert der Standardbereich, d. H. Compile.

3
Mukesh

Wenn wir keinen Bereich angeben, wird der Standardbereich kompiliert. Wenn Sie dies bestätigen möchten, gehen Sie im Eclipse-Editor einfach auf die Registerkarte Effektives Pom. 

0
Umanath