2011-02-07 8 views
8

tratta di una struttura del mio progetto multi-modulo:Come dire a maven-dependency-plugin che l'artefatto è usato nel progetto?

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

In altre parole, il modulo api utilizza slf4j a fini di registrazione. Non sa quale sarà l'implementazione della struttura di registrazione. Il modulo foo aggiunge slf4j-log4j12 e log4j per implementare la registrazione. Abbastanza semplice.

momento sto correndo maven-dependency-plugin:analyze-only e questo è quello che dice per il modulo foo:

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

Il che significa che il plugin non capisce che foo ha davvero bisogno di queste dipendenze. Come posso risolvere il problema?

+0

Perché aggiungere un altro modulo che gestisce le dipendenze quando Maven esegue la gestione delle dipendenze? È il punto più forte di Maven –

risposta

10

Cosa succede se si assegnano a tali dipendenze uno scope runtime anziché compile?

Se li avete definiti come dipendenze in fase di compilazione, penso che il plugin di dipendenza penserà che sono necessari per la compilazione quando non lo sono realmente. Ma hai bisogno solo dei file JAR slf4-log4j e log4j in fase di runtime.

Edit: Potrebbe essere necessario impostare l'opzione ignoreNonCompile:

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

+0

Buona idea, ma il risultato è lo stesso :( – yegor256

+1

@ yegor256 Ho appena modificato la mia risposta C'è un flag 'ignoreNonCompile' nell'attività di analisi, potrebbe essere necessario impostarlo. –

+0

Ora funziona :) Grazie molto! – yegor256

Problemi correlati