¿Cuál es la diferencia entre dependencyManagement
y dependencies
? He visto los documentos en el sitio web de Apache Maven. Parece que una dependencia definida en dependencyManagement
se puede utilizar en sus módulos secundarios sin especificar la versión.diferencias entre dependencymanagement y dependencias en maven
Por ejemplo:
Un proyecto principal (Pro-par) define una dependencia bajo la dependencyManagement
:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8</version>
</dependency>
</dependencies>
</dependencyManagement>
Luego, en el niño de Pro-par, puedo usar la junit:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
Sin embargo, me pregunto si es necesario definir junit en el pom padre? ¿Por qué no definirlo directamente en el módulo necesario?
Por lo tanto, su necesidad de declarar dependencias en el pom del proyecto hijo de todos modos, incluso si declararon en el pom del proyecto principal en la sección? ¿Es posible hacer algún tipo de herencia de dependencias? –
Sí, aún necesita definirlos en el POM hijo para mostrar que los está usando. En realidad, no se incluyen en los proyectos secundarios solo porque están en '' en el POM principal. La inclusión de dependencias en '' centraliza la administración de la versión, el alcance y las exclusiones para cada dependencia, siempre y cuando decida usarla. Maven [guía para la gestión de la dependencia] (http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html # Dependency_Management) entra en todos los detalles. –
hotshot309
El segundo párrafo ('dependencyManage' también controla las dependencias transitivas) solo es verdadero cuando las dependencias se establecen explícitamente: http://stackoverflow.com/questions/28312975/maven-dependencymanagement-version-ignored-in-transitive-dependencies –