Gradle的“dependencies”任务是否适用于buildScript依赖项?

30

可以通过运行gradlew dependencies来了解模块任务的依赖关系。有没有办法找到buildscript依赖项的传递依赖关系?

例如:classpath 'com.android.tools.build:gradle:1.0.0'直接依赖于:

com.android.tools.build builder
com.android.tools.lint lint
net.sf.proguard proguard-gradle
tools.base project-test-lib

MVNRepository 中所示。但这些构件都有它们自己的依赖关系。是否有办法在不手动遍历整个依赖树的情况下找出它们?

为澄清起见,我所说的类路径是由以下内容定义的:

buildscript {
    repositories {}
    dependencies { .... }
}
3个回答

57

从 Gradle 2.10 开始,现在可以通过以下方式获取有关 buildscript 依赖项的信息:

从 Gradle 2.10 开始,您现在可以通过以下方式获取有关 buildscript 依赖项的信息:

gradle buildEnvironment

对于旧版本,您将需要明确定义一个DependencyReportTask类型的任务,并配置您的构建脚本。

task buildscriptDependencies(type: DependencyReportTask) {
    configurations = [buildscript.configurations.classpath]
}

不幸的是,“gradle buildEnvironment”似乎对核心插件没有输出。例如,对于“apply plugin:'application'”,虽然“application”插件依赖于“java”插件,但未显示任何依赖项。 - sschuberth
@sschuberth 如果你只是想知道一个构建使用了哪些插件,我建议你调查一下构建扫描。例如 https://scans.gradle.com/s/pqarplj4ogagg/plugins。 - Mark Vieira
由于构建扫描是一项公共云服务,如果我不介意在公开场合披露有关我的源代码/构建系统的详细信息,那么这将起作用,但有时我并不想这样做。我知道Gradle Enterprise有本地版本,但我真的更喜欢一些“离线”工作并在我的本地磁盘上创建报告的东西。 - sschuberth

1

你能举个例子来说明如何使用它来获取构建脚本依赖项的报告吗? - atok
只需添加以下任务: task allDepInsight(type: DependencyInsightReportTask) << {}然后运行 gradle allDepInsight - Mark
它会导致以下错误:任务“:SdkTestApp:allDepInsight”执行失败。
无法生成依赖项洞察报告,因为未指定输入配置。可以从命令行指定,例如:“:SdkTestApp:allDepInsight --configuration someConf --dependency someDep”。
- atok
嗯,看起来你需要指定依赖项: gradle allDepInsight --configuration testRuntime --dependency org.slf4j:slf4j-simple 我不知道如何为项目中的所有依赖项执行此操作。 - Mark
我似乎找不到配置,尽管报告和文档都说应该有一些(使用Android Studio v1.5附带的任何内容)。 - Hunter-Orionnoir

-7

您可以使用此命令:

gradle dependencyInsight --dependency gradle

Udacity有一份非常棒的教程,Gradle for Android,但是你也可以观看这个视频以获得更多解释。


1
无法生成依赖项洞察报告,因为未指定输入配置。尝试添加 --configuration classpath,但仍然出现相同的错误。还尝试了 compileruntime,但都没有成功。有什么想法吗?(Gradle 3.5) - TWiStErRob
2
这个答案是不正确的。首先,正如上面的评论所提到的,dependencyInsight任务需要通过--configuration选项提供配置名称。其次,只有项目配置而不是buildscript配置会暴露给这个任务。 - Mark Vieira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接