是否有可能使用Gradle生成一个什么依赖什么的树?
我有一个项目,想要找出所有的依赖,所以我可以用前向声明等修剪它一点。
是否有可能使用Gradle生成一个什么依赖什么的树?
我有一个项目,想要找出所有的依赖,所以我可以用前向声明等修剪它一点。
当前回答
在Gradle中,事情已经向前发展了,所以我相信这个问题值得另一个答案。 从Gradle 4.3开始,就引入了“构建扫描”。所有相关信息都可以在Gradle文档(1,2)中找到。对我来说,这似乎是现在最简单的方法,以一种清晰、有组织的方式检查你的依赖关系(通常是你的构建)。
它们很容易创建,只需执行即可:
gradle build --scan
(或。/gradlew build -scan如果你使用包装)
This produces a randomly generated link where you can see your scan. When opening that link, you enter your email and gain full control of the link: eg. share it or delete it. It has got a lot of info about your build, not just dependencies. You can see your dependencies, their hierarchies, the repository used to obtain them but also a lot of other stuff about your build, namely, its performance (which is of interest in big complex builds), your tests, even your console output and your system configuration, which JDK and JVM was used, max heap size etc.
这是一个模拟项目的截屏:
构建扫描是一个可共享的构建记录,它提供了对发生了什么以及为什么发生的洞察。您可以在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企业版中,你可以在自己的服务器上运行Gradle构建扫描。然而,我在这方面没有经验,我建议的方法是关于标准的Gradle发行版,使用Gradle的服务器进行构建扫描。
3) Gradle本身将构建扫描作为处理大多数构建问题的方法。
其他回答
通常完整的testimplemimplementation、实现和androidtestimplemimplementation依赖关系图太多了,不能一起检查。如果你只是想要实现依赖关系图,你可以使用:
./gradlew app:dependencies --configuration implementation
来源:列出项目中的依赖项
注意:compile在最近的Gradle版本中已经被弃用,在最近的版本中,建议你将所有的compile依赖项转移到实现中。请看这里的答案
注意,如果模块在到达build.gradle之前有额外的目录,您可能需要执行类似于./gradlew <module_directory>:<module_name>:dependencies的操作。如果有疑问,执行./gradlew任务——所有这些都是为了检查名称。
在Gradle中,事情已经向前发展了,所以我相信这个问题值得另一个答案。 从Gradle 4.3开始,就引入了“构建扫描”。所有相关信息都可以在Gradle文档(1,2)中找到。对我来说,这似乎是现在最简单的方法,以一种清晰、有组织的方式检查你的依赖关系(通常是你的构建)。
它们很容易创建,只需执行即可:
gradle build --scan
(或。/gradlew build -scan如果你使用包装)
This produces a randomly generated link where you can see your scan. When opening that link, you enter your email and gain full control of the link: eg. share it or delete it. It has got a lot of info about your build, not just dependencies. You can see your dependencies, their hierarchies, the repository used to obtain them but also a lot of other stuff about your build, namely, its performance (which is of interest in big complex builds), your tests, even your console output and your system configuration, which JDK and JVM was used, max heap size etc.
这是一个模拟项目的截屏:
构建扫描是一个可共享的构建记录,它提供了对发生了什么以及为什么发生的洞察。您可以在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企业版中,你可以在自己的服务器上运行Gradle构建扫描。然而,我在这方面没有经验,我建议的方法是关于标准的Gradle发行版,使用Gradle的服务器进行构建扫描。
3) Gradle本身将构建扫描作为处理大多数构建问题的方法。
在Android Studio中(至少从v2.3.3开始),你可以直接从UI运行命令:
点击Gradle选项卡,然后双击:yourmodule -> Tasks -> android -> androidDependencies
该树将显示在Gradle Console选项卡中
在Android Studio中
1)打开终端,确保你在项目的根文件夹。
2)运行。/gradlew app:dependencies(如果没有使用gradle wrapper,尝试gradle app:dependencies)
注意,运行。/gradle dependencies只会给你项目根文件夹的依赖树,所以以上述方式提到app,即./gradlew app:dependencies是很重要的。