proyecto - ¿Cuál es la diferencia en maven entre las etiquetas de dependencia y plugin en pom xml?
limpiar proyecto maven (4)
Ambos complementos y dependencias son archivos Jar.
Pero la diferencia entre ellos es que la mayor parte del trabajo en maven se hace usando complementos; mientras que la dependencia es solo un archivo Jar que se agregará al classpath mientras se ejecutan las tareas.
Por ejemplo, utiliza un compilador-complemento para compilar los archivos java. No puede usar el compilador-complemento como una dependencia, ya que eso solo agregará el complemento a la ruta de clase y no activará ninguna compilación. Los archivos Jar que se agregarán a la ruta de clase mientras se compila el archivo se especificarán como una dependencia.
Lo mismo ocurre con su escenario. Tienes que usar el complemento de primavera para ejecutar algunos ejecutables de primavera [No estoy seguro de para qué se usan los complementos de primavera. Solo estoy adivinando aquí]. Pero necesita dependencias para ejecutar esos ejecutables. Y Junit está etiquetado como dependiente, ya que es utilizado por surefire-plugin para ejecutar pruebas unitarias.
Entonces, podemos decir que el complemento es un archivo Jar que ejecuta la tarea, y la dependencia es un Jar que proporciona los archivos de clase para ejecutar la tarea.
Espero que responda tu pregunta!
Soy nuevo en la herramienta Maven, hice un proyecto con Spring e Hibernate y están configurados en pom.xml como complementos, pero JUnit está etiquetado como dependiente. Mi pregunta es: ¿cuál es la lógica detrás de uno como un complemento y uno como dependencia?
Los complementos se usan para agregar funcionalidades a Maven
(como agregar compatibilidad con eclipse
o compatibilidad con SpringBoot
a Maven
etc.). Depende de las dependencias de su código fuente para pasar cualquier fase de Maven ( compile
o test
por ejemplo). En el caso de JUnit
ya que el código de prueba es básicamente parte de su código base y usted llama a JUnit
comandos específicos dentro de suites de prueba y esos comandos no son provistos por Java SDK
entonces JUnit
debe estar presente en el momento en que Maven
está en la fase de prueba y esto es manejado mencionando JUnit
como una dependencia en su archivo pom.xml
.
Si vienes de un fondo frontal como yo y estás familiarizado con Grunt y npm, piénsalo de esta manera:
Primero ejecutaría, digamos, npm install grunt-contrib-copy --save-dev
. Esto es como la <dependency></dependency>
maven. Descarga los archivos necesarios para ejecutar una tarea de compilación.
Luego configuraría la tarea en Gruntfile.js
copy: {
main: {
src: ''src/*'',
dest: ''dest/'',
},
}
Esto es como <plugin>/<plugin>
maven. Le está diciendo a la herramienta de compilación qué hacer con el código descargado por npm / <dependency></dependency>
.
Por supuesto, esta no es una analogía exacta, pero lo suficientemente cerca como para ayudar a entenderlo.
Maven en sí mismo puede describirse como un procesador de alimentos que tiene muchas unidades diferentes que se pueden usar para realizar diferentes tareas. Esas unidades se llaman complementos. Por ejemplo, para compilar su proyecto, maven utiliza maven-compiler-plugin
, para ejecutar pruebas - maven-surefire-plugin
y más.
La dependencia en términos de maven es un paquete de clases de las que depende tu proyecto. Puede ser jar, war, etc. Por ejemplo, si quieres poder escribir una prueba JUnit, deberás usar las anotaciones y clases de JUnit, por lo que debes declarar que tu proyecto depende de JUnit.