Si se proporciona una dependencia, ¿por qué no se puede heredar esa dependencia con el mismo ámbito, así que no tengo que declararla?
Es es heredado con el mismo valor. Dada la siguiente matriz pom.xml
:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow.Q3597684</groupId>
<artifactId>root</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Q3597684 - Root</name>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Y la siguiente pom.xml
que hereda del artefacto raíz:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>root</artifactId>
<groupId>com.stackoverflow.Q3597684</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>child</artifactId>
<packaging>war</packaging>
<name>Q3597684 - Child</name>
<dependencies/>
</project>
Correr mvn dependency:tree
del niño da el siguiente resultado:
$ mvn dependency:tree[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'dependency'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Q3597684 - Child
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
[INFO] com.stackoverflow.Q3597684:child:war:1.0-SNAPSHOT
[INFO] +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] \- junit:junit:jar:3.8.1:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
La proporcionado servlet-api
está allí, como se esperaba.
¿Está utilizando (mal) la sección dependencyManagement
?
No declaro mis módulos niño module . No lo hago de esa manera porque solo sabría de niños internos y no de proyectos externos. –
@Walter Esto no es importante (mi pom padre es un pom que se agrega porque usé arquetipos para configurar este proyecto), la parte importante es el elemento ''. Puede usar la herencia sin agregación, y esto no cambia mi respuesta. Pero lo actualizaré para mostrar solo la herencia y evitar cualquier confusión. –