Appearance
查看依赖树
分析依赖树是排查依赖冲突和理解传递依赖的重要手段。
基本命令
bash
# 查看所有配置的依赖树
./gradlew dependencies
# 查看特定配置(推荐,输出更精简)
./gradlew dependencies --configuration compileClasspath
./gradlew dependencies --configuration runtimeClasspath
./gradlew dependencies --configuration testCompileClasspath
# 多项目:查看子项目的依赖
./gradlew :core:dependencies --configuration compileClasspath输出解读
compileClasspath - Compile classpath for source set 'main'.
+--- org.springframework.boot:spring-boot-starter-web:3.2.0
| +--- org.springframework.boot:spring-boot-starter:3.2.0
| | +--- org.springframework.boot:spring-boot:3.2.0
| | | +--- org.springframework:spring-core:6.1.1
| | | \--- org.springframework:spring-context:6.1.1
| | \--- org.springframework.boot:spring-boot-autoconfigure:3.2.0
| +--- org.springframework.boot:spring-boot-starter-json:3.2.0
| | \--- com.fasterxml.jackson.core:jackson-databind:2.15.3 (*)
| \--- ...
\--- com.google.guava:guava:30.0 -> 32.0.1-jre
\--- ...
(*) - dependencies omitted (listed previously)
(c) - dependency constraint| 符号 | 含义 |
|---|---|
+--- | 非最后一个子依赖 |
\--- | 最后一个子依赖 |
(*) | 重复依赖(已在上方列出) |
-> X.Y.Z | 版本被升级到 X.Y.Z(冲突解决) |
(c) | 版本约束 |
(n) | 不参与解析的依赖 |
dependencyInsight - 追踪单个依赖
bash
# 查看 spring-core 被谁引入、版本如何决定
./gradlew dependencyInsight --dependency spring-core
# 指定配置
./gradlew dependencyInsight --dependency guava --configuration compileClasspath输出示例:
> Task :dependencyInsight
com.google.guava:guava:32.0.1-jre (selected by rule)
Variant compileClasspath:
...
com.google.guava:guava:30.0 -> 32.0.1-jre
\--- com.example:A:1.0
\--- compileClasspath
com.google.guava:guava:32.0.1-jre
\--- com.example:B:2.0
\--- compileClasspath这告诉你:A 要求 30.0,B 要求 32.0.1,Gradle 选择了 32.0.1(高版本优先)。
HTML 依赖报告
bash
# 生成 HTML 格式的依赖报告
./gradlew htmlDependencyReport
# 报告位于:build/reports/project/dependencies/Build Scan 依赖分析
bash
# 生成构建扫描,提供可视化的依赖分析
./gradlew build --scan访问生成的 URL,可以在浏览器中交互式查看依赖树。