web-dev-qa-db-fra.com

A quoi sert <scope> sous <dependency> dans pom.xml?

En regardant documentation http://maven.Apache.org/surefire/maven-surefire-plugin/examples/testng.html , on peut voir la balise <scope> sous <dependency> 

Qu'est-ce que c'est et comment pouvons-nous l'utiliser pour exécuter un test?

137
TDHM

L'élément <scope> peut prendre 6 valeurs: compiler, fourni, exécution, tester, système et importer.

Cette portée est utilisée pour limiter la transitivité d'une dépendance et également pour affecter le chemin d'accès aux classes utilisé pour diverses tâches de génération.

compiler

C'est la portée par défaut, utilisée si aucune n'est spécifiée. Les dépendances de compilation sont disponibles dans tous les chemins de classes d'un projet. De plus, ces dépendances sont propagées aux projets dépendants.

à condition de

Cela ressemble beaucoup à la compilation, mais indique que vous vous attendez à ce que le JDK ou un conteneur fournisse la dépendance au moment de l'exécution. Par exemple, lors de la création d'une application Web pour Java Enterprise Edition, vous devez définir la dépendance de l'API Servlet et des API Java EE associées sur la portée fournie, car le conteneur Web fournit ces classes. Cette portée est uniquement disponible sur le chemin de classe de compilation et de test et n'est pas transitive.

runtime

Cette étendue indique que la dépendance n'est pas requise pour la compilation, mais pour l'exécution. C'est dans les classpaths d'exécution et de test, mais pas le classpath de compilation.

test

Cette étendue indique que la dépendance n'est pas requise pour une utilisation normale de l'application et n'est disponible que pour les phases de compilation et d'exécution du test.

système

Cette étendue est similaire à fournie sauf que vous devez fournir le fichier JAR qui le contient explicitement. L'artefact est toujours disponible et n'est pas recherché dans un référentiel.

import (disponible uniquement dans Maven 2.0.9 ou version ultérieure)

Cette étendue n'est utilisée que sur une dépendance de type pom dans la section. Cela indique que le POM spécifié doit être remplacé par les dépendances de la section de ce POM. Dans la mesure où elles sont remplacées, les dépendances avec une étendue d'importation ne participent pas réellement à la limitation de la transitivité d'une dépendance.

Pour répondre à la deuxième partie de votre question:

Comment pouvons-nous l'utiliser pour exécuter le test?

Notez que la portée test permet d'utiliser des dépendances uniquement pour la phase de test.

Lisez le documentation pour plus de détails.

210
Ortomala Lokni

Six portées de dépendance en une seule ligne:

  • compile : default
  • fourni : par JDK ou un conteneur lors de l'exécution
  • runtime : non requis pour la compilation
  • test : utilisé uniquement pendant les tests
  • system : fourni localement
  • import : uniquement disponible dans Maven 2.0.9 ou version ultérieure
7
Premraj

ajouté de bonnes images avec expliquer la portée

 enter image description here

 enter image description here

5
vaquar khan

La balise Scope est toujours utilisée pour limiter les dépendances transitives et la disponibilité du fichier jar au niveau du chemin de la classe. Si nous ne fournissons pas de portée, la portée par défaut fonctionnera donc/ Compiler .

3
Mukesh

Si nous ne fournissons aucune portée, la portée par défaut est compilée. Si vous souhaitez confirmer, il vous suffit de vous rendre dans l'onglet pom effectif dans l'éditeur Eclipse, il vous montrera la compilation. 

0
Umanath