Uso il plugin maven-enforcer per verificare i problemi di convergenza delle dipendenze. Un output tipico sarebbe:Risoluzione dei problemi di convergenza delle dipendenze Maven
[WARNING] Rule 1: org.apache.maven.plugins.enforcer.DependencyConvergence failed
with message:
Failed while enforcing releasability the error(s) are [
Dependency convergence error for junit:junit:3.8.1 paths to dependency are:
+-foo:bar:1.0-SNAPSHOT
+-ca.juliusdavies:not-yet-commons-ssl:0.3.9
+-commons-httpclient:commons-httpclient:3.0
+-junit:junit:3.8.1
and
+-foo:bar:1.0-SNAPSHOT
+-junit:junit:4.11
]
Vedendo questo messaggio, normalmente lo "risolvere" escludendo la dipendenza transitiva, ad es.
<dependency>
<groupId>ca.juliusdavies</groupId>
<artifactId>not-yet-commons-ssl</artifactId>
<version>0.3.9</version>
<exclusions>
<!-- This artifact links to another artifact which stupidly includes
junit in compile scope -->
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
mi piacerebbe capire se questo è veramente una difficoltà e dei rischi connessi a escludere le librerie in questo modo. Come la vedo io:
La "correzione" è normalmente sicura, purché ho scelto di utilizzare la versione più recente. Ciò si basa sugli autori delle librerie che mantengono la retrocompatibilità.
V'è in genere alcun impatto sul Maven costruire (dal momento che la definizione più vicino vince), ma escludendo la dipendenza che sto dicendo Maven che so su questo problema e placare l'esperto-enforcer-plugin così.
I miei pensieri sono corretti e c'è un modo alternativo di gestire questo problema? Sono interessato alle risposte che si concentrano sul caso generale: mi rendo conto che l'esempio junit
è un po 'strano.
Un'ottima risposta, grazie. Non avevo pensato ai pericoli di mantenere un'esclusione. –
Ti ho assegnato il premio in base al livello di dettaglio nella tua risposta.È stato bello vedere un esempio (un po 'reale) di come questo può andare storto. –
@DuncanJones Grazie. La mia risposta è piuttosto un avvertimento che una soluzione. Comunque, spero che possa essere d'aiuto. –