是否可以使用gradle来生成依赖于什么的树?
我有一个项目,想要找出所有的依赖项,所以我可以用前向声明等来修剪它。
答案 0 :(得分:480)
对于Android,请使用此行
gradle app:dependencies
或者如果你有一个gradle包装器:
./gradlew app:dependencies
其中app
是您的项目模块。
此外,如果您想检查某些内容是compile
与testCompile
vs androidTestCompile
依赖关系以及内容是什么:
./gradlew :app:dependencyInsight --configuration compile --dependency <name>
./gradlew :app:dependencyInsight --configuration testCompile --dependency <name>
./gradlew :app:dependencyInsight --configuration androidTestCompile --dependency <name>
答案 1 :(得分:195)
您可以使用命令gradle dependencies
呈现依赖关系树。有关详细信息,请查看在线用户指南中的11.6.4 Listing project dependencies部分。
答案 2 :(得分:114)
如果您发现很难导出gradle dependencies
的控制台输出,则可以添加Project reports plugin:
apply plugin: 'project-report'
使用以下方法生成HTML报告:
$ ./gradlew htmlDependencyReport
通常可以在build/reports/project/dependencies/index.html
答案 3 :(得分:69)
在Android Studio中(至少从v2.3.3开始),您可以直接从UI运行命令:
单击 Gradle 选项卡,然后双击:yourmodule - &gt;任务 - &gt; android - &gt; androidDependencies
树将显示在 Gradle Console 标签
中答案 4 :(得分:24)
通常,完整的test
,compile
和androidTestCompile
依赖关系图无法一起检查。如果您只想使用compile
依赖图,则可以使用:
./gradlew app:dependencies --configuration compile
注意:在最新版本的Gradle中已弃用compile
,在较新版本中,建议您将所有compile
依赖项移至implementation
。请参阅this answer here
答案 5 :(得分:19)
对我来说,这只是一个命令
在build.gradle
中添加plugin
apply plugin: 'project-report'
然后转到cmd并运行以下命令
./gradlew htmlDependencyReport
这给了我一个HTML报告WOW Html报告?
或者,如果您想在
text file
中生成报告,可以通过以下命令使搜索变得容易
gradlew dependencyReport
那是我的主人。
答案 6 :(得分:14)
如果您想在图表中可视化您的依赖项,可以使用gradle-dependency-graph-generator插件。
一般来说,这个插件的输出可以在 build / reports / dependency-graph 目录中找到,如果你使用 0.5.0 版本的插件。
真实应用中的依赖图示例(Chess Clock):
答案 7 :(得分:9)
对于最近版本的Gradle(我在6.4.1版本中进行了测试):
gradle dependencies --configuration compileClasspath
或者如果您使用的是Gradle Wrapper:
gradlew dependencies --configuration compileClasspath
使用“ debug”和“ release”编译配置文件为Android构建时,可以使用debugCompileClasspath
和releaseCompileClasspath
配置代替compileClasspath
。
答案 8 :(得分:8)
在Gradle中,事情向前发展了,所以我认为这个问题值得另一个答案。
由于摇篮4.3 “的构建扫描强>” 被引入。 Gradle文档(1,2)中提供了所有相关信息。对我而言,这似乎是以一种清晰,有组织的方式检查依赖关系(通常是您的构建)的最简单方法。
它们很容易创建,只需执行:
gradle build --scan
(或./gradlew build --scan
(如果使用包装器)
这会产生一个随机生成的链接,您可以在其中查看扫描结果。转到该链接时,您输入电子邮件,然后您就可以完全控制该链接,例如。分享或删除它。它已经获得了许多关于您的构建的信息 ,而不仅仅是依赖关系。您可以看到您的依赖关系,它们的层次结构,用于获取它们的存储库,以及有关构建的许多其他内容,即其性能(大型复杂构建中很重要的性能),测试,甚至控制台输出和系统配置,使用了哪个JDK和JVM,最大堆大小等。
这是来自模拟项目的打印屏幕:
构建扫描是构建的可共享记录,可提供有关发生情况和原因的见解。您可以在scans.gradle.com上免费创建构建扫描。
但是请注意,您的构建过程的信息将被发送到Gradle服务器。你有完全控制删除它时,你与你的检查结束。
最后,您也可以对早于4.3的Gradle版本使用构建扫描,只需在构建脚本中手动添加扫描插件即可。
修改:
从意见将一些反馈一些额外的注意事项:
1)错误地执行此操作非常困难,或者在不了解您的构建的某些信息将在线的情况下(这是您的私有特权,可以删除它,但仍在线)是非常困难的。
执行gradle build --scan
时,将显示以下消息:
Publishing a build scan to scans.gradle.com requires accepting the Gradle
Terms of Service defined at https://gradle.com/terms-of-service. Do you
accept these terms? [yes, no]
您必须显式编写yes
,然后消息继续:
Publishing build scan...
https://gradle.com/s/a12en0dasdu
2)在Gradle Enterprise中,您可以在自己的服务器中托管gradle构建扫描。但是我对此没有经验,我提出的方法是关于标准Gradle分发,使用Gradle的服务器进行构建扫描。
3)Gradle本身促进了构建扫描,以此作为解决大多数构建问题的方法。
答案 9 :(得分:6)
在Android Studio中
1)打开终端并确保您位于项目的根文件夹中。
2)运行./gradlew app:dependencies
(如果不使用gradle包装器,请尝试gradle app:dependencies
)
请注意,运行./gradle dependencies
只会为您提供项目根文件夹的依赖关系树,因此以上述方式提及应用,即./gradlew app:dependencies
非常重要。
答案 10 :(得分:5)
请注意,如果模块在到达build.gradle之前有额外的目录,则可能需要执行./gradlew <module_directory>:<module_name>:dependencies
之类的操作。如有疑问,请./gradlew tasks --all
检查姓名。
答案 11 :(得分:4)
对于Android,在终端中输入
gradlew app:dependencies
它将列出所有依赖项以及具有较新版本的依赖项,供您升级
com.android.support:customtabs:26.1.0 -> 27.1.1 (*)
答案 12 :(得分:3)
我发现运行它也很有用:
<div class="aboutpic">
<img src="http://via.placeholder.com/350x150" class="img-responsive">
<a href="CV.pdf" class="btn btn-warning">Download Resume</a>
</div>
这显示了如何解析依赖项(./gradlew dI --dependency <your library>
)并帮助您调试在dependencyInsight
请参阅:https://docs.gradle.org/current/userguide/tutorial_gradle_command_line.html
答案 13 :(得分:0)
如果要在两个步骤的最后将所有依赖项放在一个文件中。
将其添加到项目根目录的build.gradle.kts
中
project.rootProject.allprojects {
apply(plugin="project-report")
this.task("allDependencies", DependencyReportTask::class) {
evaluationDependsOnChildren()
this.setRenderer(AsciiDependencyReportRenderer())
}
}
然后申请:
./gradlew allDependencies | grep '\-\-\-' | grep -Po '\w+.*$' | awk -F ' ' '{ print $1 }' | sort | grep -v '\{' | grep -v '\[' | uniq | grep '.\+:.\+:.\+'
这将为您提供项目和子项目中的所有依赖关系以及所有第三方的依赖关系。
如果要以编程方式完成此操作,则需要一个自定义的依赖项呈现器-您可以通过扩展AsciiDependencyReportRenderer
开始,默认情况下将打印出依赖项的ascii图。 / p>