什么是Gradle工件依赖关系图命令?


123

我在Gradle文档中阅读了此评论:

To deal with problems due to version conflicts, reports with dependency graphs
are also very helpful. Such reports are another feature of dependency management.

我有某种罐子被带进来,但我需要弄清楚它的来源。通常,我只是全局地将其排除在外,但是在这里我需要有关层次结构的一些信息。我如何像从Ivy和Maven一样获得此信息?

更不用说有人将Hibernate jars(很多)带入了我的jar列表,​​我真的很想知道谁,因为我不使用Hibernate并试图消除这种依赖。

Answers:


127

该命令为gradle dependencies,在Gradle 1.2中其输出得到了很大的改进。(您已经可以尝试使用1.2-rc-1。)


实际上,我尝试过...。我意识到我的依赖项位于我最低层的子项目(即其他人都依赖的子项目)中,而不是在主项目中...不知道这是不好还是好。
迪恩·希勒

您需要针对感兴趣的特定项目运行命令。通常,您需要CD进入项目目录并从那里运行命令。
彼得·尼德维瑟

9
这不适用于所有类型的项目。我得到“无配置”,并且需要运行其他操作才能完成此操作。希望有一天gradle可以解决这个问题,因此实际的命令将是可预测的。
R. van Twisk 2014年

2
是否有包含传递依赖项的标志?
thetwan 2014年

1
它们是自动包含的。
Peter Niederwieser 2014年

121

嗯,由于我的主项目中没有依赖项,所以“ gradle依赖项”仅列出那些而不是子项目的依赖项,因此正确的命令最终被

 gradle :<subproject>:dependencies

所以对我来说

 gradle :master:dependencies

20
如果您可以说-r递归的话,那就好了
Blundell 2013年

38

如果要查看对项目以及所有子项目的依赖关系,请在顶层build.gradle中使用:

subprojects {
    task listAllDependencies(type: DependencyReportTask) {}
}

然后调用gradle:

gradle listAllDependencies

2
有关在博客中这种方法的更多细节:solidsoft.wordpress.com/2014/11/13/...
马辛Zajączkowski

9
您可以将其添加到您的版本中,~/.gradle/init.gradle而不是将其添加到每个版本中。然后,它适用于您计算机上的所有项目,但仅适用于您。
derekv 2015年

24

如果配置很多,输出可能会很长。要仅显示运行时配置的依赖关系,请运行

gradle dependencies --configuration runtime

15

如果要递归包括子项目,则可以随时自己编写:

粘贴到顶层build.gradle

task allDeps << {
    println "All Dependencies:"
    allprojects.each { p ->
        println()
        println " $p.name ".center( 60, '*' )
        println()
        p.configurations.all.findAll { !it.allDependencies.empty }.each { c ->
            println " ${c.name} ".center( 60, '-' )
            c.allDependencies.each { dep ->
                println "$dep.group:$dep.name:$dep.version"
            }
            println "-" * 60
        }
    }
}

运行:

gradle allDeps

5
gradlew -q :app:dependencies > dependencies.txt

将所有依赖项写入文件dependencies.txt


4

对于那些希望调试react-native项目中gradle依赖关系的人,该命令(从执行projectname/android

./gradlew app:dependencies --configuration compile

0

在最新版本的Gradle(即5+)中,如果使用该--scan标志运行构建,它将在可以单击的浏览器中告诉您各种有用的信息,包括相关性。

gradlew --scan clean build

它将分析该构建中发生的问题。非常干净。


1
但它只分析了跑不完整的图形:(目标。
迪恩希勒

真正!这取决于您想要什么。我认为,仅针对所运行目标的依赖性更加强大。它会告诉您为什么一组命令似乎做错了事。
瑞安·希灵顿

我真的很想要完整的图表,所以我不必测试每个节点tbh...。这相当繁琐...在新版本中。
迪恩·希勒
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.