2013-07-15 10 views
24

Ich habe ein Projekt, in dem ich sl4j mit log4j verwende. Ich habe kürzlich ein paar neue Abhängigkeiten zu meinem Projekt hinzugefügt, und eine dieser neuen Abhängigkeiten, die ich hinzugefügt habe, schließt eine transitive Abhängigkeit zu logback-classic ein, die eine weitere Bindung für sj4j enthält.Quelle der transitiven Abhängigkeit bestimmen

Ich möchte Logback loswerden, aber ich habe keine Ahnung, welche meiner direkten Abhängigkeiten die transitive Abhängigkeit hinzugefügt, so dass ich es ausschließen kann.

In Maven weiß ich, wie man den gesamten Graph der Abhängigkeiten zu bestimmen, die die Quelle einer transitiven Abhängigkeit ist, aber ich habe keine Ahnung, wie dies mit Gradle zu tun.

Weiß jemand, wie man die Quellenabhängigkeit einer transitiven Abhängigkeit mit Gradle bekommt?

Antwort

37

Um den gesamten Abhängigkeitsbaum für jeden Klassenpfad anzuzeigen, verwenden Sie gradle dependencies. Wenn Sie nur an einem bestimmten Klassenpfad interessiert sind, verwenden Sie (sagen wir) gradle dependencies --configuration compile. Verwenden Sie die Option -p, um auf einem Unterprojekt zu laufen.

Um anzuzeigen, wer eine bestimmte Abhängigkeit in einen bestimmten Klassenpfad einfügt und wie Versionskonflikte gelöst wurden, verwenden Sie (sagen wir) gradle dependencyInsight --dependency logback --configuration compile.

Beachten Sie, dass Sie auch eine Abhängigkeit von einem ganzen Klassenpfad (oder mehreren) ausschließen können. Normalerweise ist dies zuverlässiger als das Ausschließen einer bestimmten transitiven Abhängigkeit. Zum Beispiel:

configurations.all*.exclude module: "logback-classic" 
Verwandte Themen