Digamos que tengo dos dependencias de Maven definidas en un proyecto como el siguiente.Dependencia de Maven dentro de la dependencia con diferente alcance
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mycompany.library</groupId>
<artifactId>mylibrary</artifactId>
<version>1.0.1</version>
<scope>compile</scope>
</dependency>
Luego, dentro de mylibrary, también tengo una dependencia definida a continuación.
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.3.1</version>
<scope>compile</scope>
</dependency>
Cuando Empaqueto mi proyecto, no veo xstream empaquetado dentro de ella. Creo que el alcance de la dependencia xstream del proyecto, 'test', está anulando el alcance de la dependencia xstream de mylibrary, 'compilar'.
En este tipo de situación, ¿cuál es la mejor manera de incluir el xstream para todo el proyecto para que el submódulo pueda tener acceso a él cuando se empaqueta dentro del proyecto?
He leído la explicación del sitio web de Apache Maven sobre las dependencias transitorias, pero estoy luchando por comprender lo que significa, y también para encontrar las mejores prácticas en esta situación.
del sitio web de Apache Maven: - compilar Este es el alcance predeterminado, se utiliza 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. –
Tal vez mi pregunta original causó confusión porque utilicé 'submódulo'. Por favor vea mi pregunta editada arriba. –
Sí, me preguntaba más sobre el alcance de la prueba. – aperkins