maven - ¿Para qué sirve<scope> en<dependency> en pom.xml?
(4)
El elemento <scope>
puede tomar 6 valores: compilar , proporcionar , tiempo de ejecución , prueba , sistema e importar .
Este alcance se usa para limitar la transitividad de una dependencia y también para afectar la classpath usada para varias tareas de compilación.
compilar
Este es el alcance predeterminado, utilizado si no se especifica ninguno. Las dependencias de compilación están disponibles en todos los classpaths de un proyecto. Además, esas dependencias se propagan a proyectos dependientes.
previsto
Esto es muy similar a la compilación, pero indica que espera que el JDK o un contenedor proporcione la dependencia en tiempo de ejecución. Por ejemplo, al crear una aplicación web para Java Enterprise Edition, debe establecer la dependencia de la API de Servlet y las API de Java EE relacionadas en el alcance proporcionado porque el contenedor web proporciona esas clases. Este alcance solo está disponible en el classpath de compilación y prueba, y no es transitivo.
tiempo de ejecución
Este ámbito indica que la dependencia no es necesaria para la compilación, pero es para la ejecución. Está en los classpaths de tiempo de ejecución y de prueba, pero no en el classpath de compilación.
prueba
Este ámbito indica que la dependencia no es necesaria para el uso normal de la aplicación, y solo está disponible para las fases de compilación y ejecución de pruebas.
sistema
Este alcance es similar al proporcionado, excepto que debe proporcionar el JAR que lo contiene explícitamente. El artefacto siempre está disponible y no se busca en un repositorio.
importar (solo disponible en Maven 2.0.9 o posterior)
Este alcance solo se usa en una dependencia de tipo pom en la sección. Indica que el POM especificado debe reemplazarse con las dependencias en la sección de ese POM. Dado que son reemplazados, las dependencias con un alcance de importación en realidad no participan en la limitación de la transitividad de una dependencia.
Para responder la segunda parte de tu pregunta:
¿Cómo podemos usarlo para ejecutar la prueba?
Tenga en cuenta que el alcance de la test
permite usar dependencias solo para la fase de prueba.
Lea la maven.apache.org/guides/introduction/… para más detalles.
En la documentación http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html , podemos ver la etiqueta <scope>
en <dependency>
¿Qué es eso y cómo podemos usarlo para ejecutar la prueba?
La etiqueta de alcance siempre se usa para limitar las dependencias transitivas y la disponibilidad del contenedor a nivel de ruta de clase. Si no proporcionamos ningún ámbito, entonces el alcance predeterminado funcionará, es decir, Compilar .
Seis ámbitos de Dependencia en una sola línea:
- compilar : predeterminado
- proporcionado : por JDK o un contenedor en tiempo de ejecución
- tiempo de ejecución : no es necesario para la compilación
- prueba : se usa solo durante las pruebas
- sistema : proporcionado localmente
- importar : solo disponible en Maven 2.0.9 o posterior
Si no proporcionamos ningún alcance, entonces el alcance predeterminado es compilar. Si desea confirmar, simplemente vaya a la pestaña Efectivo pom en el editor de eclipse, que le mostrará como compilar.