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