Gradle - Afficher la dépendance du projet

Dans ce didacticiel, nous allons vous montrer comment afficher les dépendances de projet avec l'outil de génération Gradle. Passez en revue les dépendances d'un projet Spring MVC simple.
build.gradle
dependencies {
compile 'org.slf4j:jcl-over-slf4j:1.7.12'
compile 'ch.qos.logback:logback-classic:1.1.3'
compile('org.springframework:spring-webmvc:4.1.6.RELEASE'){
exclude group: 'commons-logging', module: 'commons-logging'
}
compile 'org.hsqldb:hsqldb:2.3.2'
providedCompile 'javax.servlet:servlet-api:2.5'
}
P.S Tested with Gradle 2.4
1. dépendances gradle
Affichez les dépendances du projet (directes et transitives pour toutes les configurations) dans un format arborescent. Ce rapport de dépendance est très volumineux, il n'a pas beaucoup de valeur à voir.
Terminal
$ gradle dependencies archives - Configuration for archive artifacts. No dependencies compile - Compile classpath for source set 'main'. +--- org.slf4j:jcl-over-slf4j:1.7.12 | \--- org.slf4j:slf4j-api:1.7.12 +--- ch.qos.logback:logback-classic:1.1.3 | +--- ch.qos.logback:logback-core:1.1.3 | \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.12 +--- org.springframework:spring-webmvc:4.1.6.RELEASE | +--- org.springframework:spring-beans:4.1.6.RELEASE | | \--- org.springframework:spring-core:4.1.6.RELEASE | +--- org.springframework:spring-context:4.1.6.RELEASE | | +--- org.springframework:spring-aop:4.1.6.RELEASE | | | +--- aopalliance:aopalliance:1.0 | | | +--- org.springframework:spring-beans:4.1.6.RELEASE (*) | | | \--- org.springframework:spring-core:4.1.6.RELEASE | | +--- org.springframework:spring-beans:4.1.6.RELEASE (*) | | +--- org.springframework:spring-core:4.1.6.RELEASE | | \--- org.springframework:spring-expression:4.1.6.RELEASE | | \--- org.springframework:spring-core:4.1.6.RELEASE | +--- org.springframework:spring-core:4.1.6.RELEASE | +--- org.springframework:spring-expression:4.1.6.RELEASE (*) | \--- org.springframework:spring-web:4.1.6.RELEASE | +--- org.springframework:spring-aop:4.1.6.RELEASE (*) | +--- org.springframework:spring-beans:4.1.6.RELEASE (*) | +--- org.springframework:spring-context:4.1.6.RELEASE (*) | \--- org.springframework:spring-core:4.1.6.RELEASE +--- org.hsqldb:hsqldb:2.3.2 \--- javax.servlet:servlet-api:2.5 default - Configuration for default artifacts. +--- org.slf4j:jcl-over-slf4j:1.7.12 | \--- org.slf4j:slf4j-api:1.7.12 +--- ch.qos.logback:logback-classic:1.1.3 | +--- ch.qos.logback:logback-core:1.1.3 | \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.12 ... providedCompile - Additional compile classpath for libraries that should not be part of the WAR arc \--- javax.servlet:servlet-api:2.5 providedRuntime - Additional runtime classpath for libraries that should not be part of the WAR arc \--- javax.servlet:servlet-api:2.5 runtime - Runtime classpath for source set 'main'. +--- org.slf4j:jcl-over-slf4j:1.7.12 | \--- org.slf4j:slf4j-api:1.7.12 +--- ch.qos.logback:logback-classic:1.1.3 | +--- ch.qos.logback:logback-core:1.1.3 | \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.12 ... testCompile - Compile classpath for source set 'test'. +--- org.slf4j:jcl-over-slf4j:1.7.12 | \--- org.slf4j:slf4j-api:1.7.12 +--- ch.qos.logback:logback-classic:1.1.3 | +--- ch.qos.logback:logback-core:1.1.3 | \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.12 ... ... this report can be very large
2. dépendances gradle –configuration
Normalement, nous avons juste besoin de voir le rapport des dépendances pour une configuration particulière. Dans l'exemple ci-dessous, il affiche le rapport de dépendance pour la configuration «runtime» uniquement.
Terminal
$ gradle dependencies --configuration runtime runtime - Runtime classpath for source set 'main'. +--- org.slf4j:jcl-over-slf4j:1.7.12 | \--- org.slf4j:slf4j-api:1.7.12 +--- ch.qos.logback:logback-classic:1.1.3 | +--- ch.qos.logback:logback-core:1.1.3 | \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.12 +--- org.springframework:spring-webmvc:4.1.6.RELEASE | +--- org.springframework:spring-beans:4.1.6.RELEASE | | \--- org.springframework:spring-core:4.1.6.RELEASE | +--- org.springframework:spring-context:4.1.6.RELEASE | | +--- org.springframework:spring-aop:4.1.6.RELEASE | | | +--- aopalliance:aopalliance:1.0 | | | +--- org.springframework:spring-beans:4.1.6.RELEASE (*) | | | \--- org.springframework:spring-core:4.1.6.RELEASE | | +--- org.springframework:spring-beans:4.1.6.RELEASE (*) | | +--- org.springframework:spring-core:4.1.6.RELEASE | | \--- org.springframework:spring-expression:4.1.6.RELEASE | | \--- org.springframework:spring-core:4.1.6.RELEASE | +--- org.springframework:spring-core:4.1.6.RELEASE | +--- org.springframework:spring-expression:4.1.6.RELEASE (*) | \--- org.springframework:spring-web:4.1.6.RELEASE | +--- org.springframework:spring-aop:4.1.6.RELEASE (*) | +--- org.springframework:spring-beans:4.1.6.RELEASE (*) | +--- org.springframework:spring-context:4.1.6.RELEASE (*) | \--- org.springframework:spring-core:4.1.6.RELEASE +--- org.hsqldb:hsqldb:2.3.2 \--- javax.servlet:servlet-api:2.5 (*) - dependencies omitted (listed previously)
3. dépendance gradle
Cet «aperçu» vous permet de découvrir la relation pour une dépendance particulière.
3.1 In below example, both jcl-over-slf4j and logback-classic depends on slf4j-api, but there is a version conflict, and Gradle pick up the latest version slf4j-api:1.7.12.
Terminal
$ gradle dependencyInsight --dependency slf4j-api --configuration compile
org.slf4j:slf4j-api:1.7.12 (conflict resolution)
\--- org.slf4j:jcl-over-slf4j:1.7.12
\--- compile
org.slf4j:slf4j-api:1.7.7 -> 1.7.12
\--- ch.qos.logback:logback-classic:1.1.3
\--- compile
3.2 Yet another example, declares a Jackson 2.8.7, but Gradle picks the latest Jackson 2.9.0.pr1
build.gradle
dependencies {
compile "com.fasterxml.jackson.core:jackson-databind:2.8.7"
compile ('com.maxmind.geoip2:geoip2:2.8.0') //depends on 2.9.0.pr1
}
Terminal
$ gradle :dependencyInsight --configuration compile --dependency jackson-databind
:core:dependencyInsight
com.fasterxml.jackson.core:jackson-databind:2.9.0.pr1 (conflict resolution)
com.fasterxml.jackson.core:jackson-databind:2.8.2 -> 2.9.0.pr1
\--- com.maxmind.geoip2:geoip2:2.8.0
\--- compile
com.fasterxml.jackson.core:jackson-databind:2.8.7 -> 2.9.0.pr1
\--- compile
com.fasterxml.jackson.core:jackson-databind:[2.7.0,) -> 2.9.0.pr1
\--- com.maxmind.db:maxmind-db:1.2.1
\--- com.maxmind.geoip2:geoip2:2.8.0
\--- compile
4. gradle dépendances multi-projet
Passez en revue un exemple multi-projets.
settings.gradle
include 'core', 'crawler', 'whois', 'web','analyzer','security'
Pour afficher le rapport des dépendances pour un sous-projet:
$ gradle {subproject}:dependencies
Par exemple, affichez le rapport des dépendances pour un sous-projetcore:
$ gradle core:dependencies $ gradle core:dependencies --configuration compile $ gradle core:dependencyInsight --dependency slf4j-api --configuration compile