使用gradle来查找依赖关系树

是否有可能使用gradle生成一棵依赖于什么的树?

我有一个项目,并希望找出所有的依赖关系,所以我可能能够修剪一点前瞻性声明等。

对于Android,请使用此行

gradle app:dependencies 

或者如果你有一个gradle包装器:

 ./gradlew app:dependencies 

app是你的项目模块。

此外,如果你想检查是否有东西是compileandroidTestCompile compile vs androidTestCompile依赖以及什么是拉它:

 ./gradlew :app:dependencyInsight --configuration compile --dependency <name> ./gradlew :app:dependencyInsight --configuration testCompile --dependency <name> ./gradlew :app:dependencyInsight --configuration androidTestCompile --dependency <name> 

您可以使用gradle dependencies来渲染依赖关系树。 有关更多信息,请参阅在线用户指南中的第11.6.4节列出项目依赖关系 。

如果您发现很难导航到gradle dependencies控制台输出, gradle dependencies可以添加Project reports插件 :

 apply plugin: 'project-report' 

并使用以下命令生成HTML报告:

 $ ./gradlew htmlDependencyReport 

报告通常可以在build/reports/project/dependencies/index.html

它看起来像这样: 在这里输入图像描述

在Android Studio中(至less从v2.3.3开始),您可以直接从UI运行命令:

点击Gradle标签,然后双击:yourmodule – > Tasks – > android – > androidDependencies

该树将显示在“ Gradle控制台”选项卡中

一个图像胜过千言万语

通常完整的testcompileandroidTestCompile依赖图太多难以一起检查。 如果你只想要compile依赖关系图,你可以使用:

 ./gradlew app:dependencies --configuration compile 

来源: Gradle文档第4.7.6节

注意:在最近的Gradle版本中已经不推荐使用compile ,在更新的版本中,build议将所有的compile依赖关系转换为implementation 。 请在这里看到这个答案

在Android Studio中

1)打开terminal,确保你在项目的根文件夹。

2)运行./gradlew app:dependencies (如果不使用gradle包装,请尝试gradle app:dependencies

请注意,运行./gradle dependencies只会给你项目根文件夹的依赖关系树,所以以上述方式提到应用程序,即./gradlew app:dependencies是非常重要的。

我也发现有用的运行这个:

 ./gradlew dI --dependency <your library> 

这显示了如何解决dependencyInsight关系( dependencyInsight ),并帮助您debugging到哪里需要强制或排除您的build.gradle

请参阅: https : //docs.gradle.org/current/userguide/tutorial_gradle_command_line.html