2011-02-07 14 views
8

Esta es una estructura de mi proyecto de varios módulos:¿Cómo decirle a maven-dependency-plugin que el artefacto se usa en el proyecto?

/root 
    /api dependencies: slf4j 
    /foo dependencies: slf4j-log4j12, log4j 

En otras palabras, el módulo utiliza apislf4j para fines de registro. No sabe cuál será la implementación de la instalación de registro. El módulo foo agrega slf4j-log4j12 y log4j para implementar el registro. Bastante simple.

Ahora estoy corriendo maven-dependency-plugin:analyze-only y esto es lo que dice para el módulo foo:

[WARNING] Unused declared dependencies found: 
[WARNING] org.slf4j:slf4j-log4j12:jar:1.6.1:compile 
[WARNING] log4j:log4j:jar:1.2.16:compile 

Lo que significa que el plugin no entiende que foo realmente necesita estas dependencias. ¿Cómo puedo resolver el problema?

+0

¿Por qué agregar otro módulo que gestiona las dependencias cuando Maven realiza la gestión de la dependencia? Es el punto más fuerte de Maven –

Respuesta

10

¿Qué ocurre si le das a esas dependencias un alcance runtime en lugar de compile?

Si las ha definido como dependencias en tiempo de compilación, creo que el complemento de dependencia pensará que son necesarias para la compilación cuando en realidad no lo son. Pero solo necesita los archivos slf4-log4j y log4j JAR en tiempo de ejecución.

Editar: Es posible que necesite para establecer la opción ignoreNonCompile:

http://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html

+0

Buena idea, pero el resultado es el mismo :( – yegor256

+1

@ yegor256 Acabo de editar mi respuesta. Hay un indicador 'ignoreNonCompile' en la tarea de análisis, es posible que deba establecerlo. –

+0

Ahora funciona :) ¡Muchas gracias! – yegor256

Cuestiones relacionadas