以下是常见问题的集合以及解决这些问题的建议. 您可以获取其他技巧,并搜索Gradle论坛StackOverflow #gradle答案以及来自help.gradle.org的 Gradle文档.

Troubleshooting Gradle installation

如果您按照安装说明进行操作 ,并且无法执行Gradle构建,则以下一些技巧可能会有所帮助.

如果您在调用Gradle Wrapper之外安装了Gradle ,则可以通过在终端中运行gradle --version来检查Gradle的安装.

您应该会看到以下内容:

❯ gradle --version

-----------------------------------------------------------
Gradle 4.6
------------------------------------------------------------

Build time:   2018-02-21 15:28:42 UTC
Revision:     819e0059da49f469d3e9b2896dc4e72537c4847d

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM:          1.8.0_151 (Oracle Corporation 25.151-b12)
OS:           Mac OS X 10.13.3 x86_64

如果没有,您可能会看到一些东西.

Command not found: gradle

如果收到"找不到命令:gradle",则需要确保Gradle已正确添加到PATH .

JAVA_HOME is set to an invalid directory

如果您得到以下信息:

ERROR: JAVA_HOME is set to an invalid directory

Please set the JAVA_HOME variable in your environment to match the location of your Java installation.

您需要确保正确安装Java Development Kit版本8或更高版本,设置了JAVA_HOME环境变量,并将Java添加到了PATH .

Permission denied

如果您获得"权限被拒绝",则表示Gradle可能存在于正确的位置,但不可执行. 您可以在基于* nix的系统上使用chmod +x path/to/executable来解决此问题.

Other installation failures

如果gradle --version工作正常,但是所有构建都因相同的错误而失败,则其中一个Gradle构建配置脚本可能存在问题.

您可以通过运行执行配置脚本但不执行Gradle任务的gradle help来验证问题是否出在Gradle脚本上. 如果错误仍然存​​在,则构建配置存在问题. 如果不是,则问题在于执行一个或多个请求的任务(Gradle首先执行配置脚本,然后执行构建步骤).

Debugging dependency resolution

疑难解答依赖性解析中介绍了常见的依赖性解析问题,例如解决版本冲突.

通过单击" 依赖关系"视图并使用搜索功能,并指定解决原因,您可以看到依赖关系树,并查看哪些已解决的依赖关系版本与请求的版本有所不同.

troubleshooting dependency management build scan
图1.调试依赖项与构建扫描冲突

可以使用带有筛选条件的实际构建扫描进行探索.

Troubleshooting slow Gradle builds

有关构建性能问题(包括"同步速度慢"),请参阅《 提高Gradle构建的性能指南》.

Android开发人员应观看Android SDK工具团队的有关加速Android Gradle构建的演示. Android Studio用户指南还介绍了许多有关优化构建速度的技巧.

Debugging build logic

Attaching a debugger to your build

You can set breakpoints and debug buildSrc and standalone plugins in your Gradle build itself by setting the org.gradle.debug property to “true” and then attaching a remote debugger to port 5005.

❯ gradle help -Dorg.gradle.debug=true

此外,如果您采用了Kotlin DSL,则还可以自己调试构建脚本.

以下视频演示了如何使用IntelliJ IDEA调试示例构建.

remote debug gradle
图2.构建脚本的交互式调试

Adding and changing logging

除了控制日志记录的详细程度之外 ,您还可以使用--console=verbose标志控制生命周期日志记录中任务结果的显示(例如" UP-TO-DATE").

您还可以通过注册各种事件侦听器,用自己的Gradle日志记录代替许多日志记录. 日志记录文档中说明了一个自定义事件记录器的示例. 您还可以从外部工具控制日志记录 ,使它们更加冗长,以便调试它们的执行.

Gradle守护程序的其他日志可以在GRADLE_USER_HOME/daemon/<gradle-version>/ .

Task executed when it should have been UP-TO-DATE

--info日志说明了执行任务的原因,尽管构建扫描通过以一种可搜索的可视方式执行此操作,方法是转到" 时间轴"视图,然后单击要检查的任务.

troubleshooting task execution build scan
图3.使用构建扫描调试增量构建

您可以从此清单中了解任务结果的含义.

Debugging IDE integration

可以通过"刷新" Gradle解决IDE中许多不常见的错误. 另请参阅有关在IntelliJ IDEAEclipse中使用Gradle的更多文档.

Refreshing IntelliJ IDEA

注意:这仅适用于链接到IntelliJ的 Gradle项目.

在主菜单中,转到" View >" Tool Windows >" Gradle . 然后单击刷新图标.

troubleshooting refresh intellij
图4.在IntelliJ IDEA中刷新Gradle项目

Refreshing Eclipse (using Buildship)

如果您将Buildship用于Eclipse IDE,则可以通过打开" Gradle Tasks"视图并单击" Refresh"图标,或者通过从上下文菜单中执行Gradle > Refresh Gradle Project命令来重新同步Gradle构建.编辑Gradle脚本.

troubleshooting refresh eclipse
图5.在Eclipse Buildship中刷新Gradle项目

Getting additional help

如果您在这里没有找到解决问题的方法,请在帮助论坛上与Gradle社区联系,或者使用help.gradle.org搜索相关的开发人员资源.

如果您认为自己在Gradle中发现了错误,请在GitHub上提交问题 .