Gradle - отображение зависимости проекта
В этом руководстве мы покажем вам, как отображать зависимости проекта с помощью инструмента сборки Gradle. Просмотрите простые зависимости проекта Spring MVC.
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. Gradle зависимости
Отображение зависимостей проекта (прямых и транзитивных для всех конфигураций) в древовидном формате. Этот отчет о зависимостях очень большой, и не стоит его видеть.
Терминал
$ 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. зависимости gradle –configuration
Обычно нам просто нужно увидеть отчет о зависимостях для конкретной конфигурации. В приведенном ниже примере он отображает отчет о зависимостях только для конфигурации «времени выполнения».
Терминал
$ 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. Gradle dependencyInsight
Эта «способность проникновения в суть» позволяет вам выяснить отношения для конкретной зависимости.
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
.
Терминал
$ 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 }
Терминал
$ 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
Просмотрите пример с несколькими проектами.
settings.gradle
include 'core', 'crawler', 'whois', 'web','analyzer','security'
Чтобы отобразить отчет о зависимостях для подпроекта:
$ gradle {subproject}:dependencies
Например, отобразить отчет о зависимостях для подпроектаcore
:
$ gradle core:dependencies $ gradle core:dependencies --configuration compile $ gradle core:dependencyInsight --dependency slf4j-api --configuration compile