目录
对构建进行故障排除
以下是常见问题的集合以及解决这些问题的建议。您可以获取其他技巧,并搜索Gradle论坛和StackOverflow #gradle答案以及来自help.gradle.org的Gradle文档。
对Gradle安装进行故障排除
如果您按照安装说明进行操作,并且无法执行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
如果没有,您可能会看到一些东西。
找不到命令:gradle
如果收到“command not found: gradle”,则需要确保Gradle已正确添加到您的PATH
中。
JAVA_HOME设置为无效目录
如果您得到以下信息:
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可能存在于正确的位置,但不可执行。您可以chmod +x path/to/executable在基于* nix的系统上解决此问题。
其他安装失败
如果gradle --version
可行,但是您所有的构建都因相同的错误而失败,则您的Gradle构建配置脚本之一可能存在问题。
您可以通过运行gradle help
配置脚本而不执行Gradle任务来验证问题是否出在Gradle脚本上。如果错误仍然存在,则构建配置存在问题。如果不是,则问题在于执行一个或多个请求的任务(Gradle首先执行配置脚本,然后执行构建步骤)。
调试依赖项解析
疑难解答依赖性解析中介绍了常见的依赖性解析问题,例如解决版本冲突。
通过单击“依赖关系(Dependencies )”视图并使用搜索功能,并指定解决原因,您可以看到依赖关系树,并查看哪些已解决的依赖关系版本与请求的版本有所不同。
图1.调试依赖项与构建扫描冲突
可以使用带有筛选条件的实际构建扫描进行探索。
对缓慢的Gradle构建进行故障排除
有关构建性能问题(包括“slow sync time”),请参阅《提高Gradle构建的性能指南》。
Android开发人员应观看Android SDK工具团队的有关加速Android Gradle构建的演示。Android Studio用户指南还介绍了许多有关优化构建速度的技巧。
调试构建逻辑
通过将属性org.gradle.debug
设置为“ true”,然后将远程调试器附加到端口5005 ,可以在Gradle构建自身中设置断点并调试buildSrc和独立插件。
❯ gradle help -Dorg.gradle.debug=true
此外,如果您采用了Kotlin DSL,则还可以自己调试构建脚本。
以下视频演示了如何使用IntelliJ IDEA调试示例构建。
图2.构建脚本的交互式调试
添加和更改日志记录
除了控制日志记录的详细程度之外,您还可以使用--console=verbose
flag控制生命周期日志记录中任务结果的显示(例如“ UP-TO-DATE”)。
您还可以通过注册各种事件侦听器,用自己的Gradle日志记录代替许多日志记录。日志记录文档中说明了一个自定义事件记录器的示例。您还可以从外部工具控制日志记录,使它们更加冗长,以便调试它们的执行。
✨您可以在下找到Gradle Daemon的其他日志
GRADLE_USER_HOME/daemon/<gradle-version>/
。
应该在UP-TO-DATE执行的任务
--info
日志解释了执行任务的原因,尽管构建扫描通过以下方式以可搜索的可视方式执行此操作:转到“时间轴(Timeline)”视图,然后单击要检查的任务。
图3.使用构建扫描调试增量构建
您可以从此清单中了解任务结果的含义
调试IDE集成
可以通过“refreshing” Gradle解决IDE中许多不常见的错误。另请参阅有关在IntelliJ IDEA和Eclipse中使用Gradle的更多文档。
刷新IntelliJ IDEA
注意:这仅适用于链接到IntelliJ的Gradle项目。
在主菜单中,进入View
> Tool Windows
> Gradle
。然后单击刷新图标。
图4.在IntelliJ IDEA中刷新Gradle项目
刷新Eclipse(使用Buildship)
如果您将Buildship用于Eclipse IDE,则可以通过打开“Gradle Tasks”视图并单击“Refresh”图标,或者通过在编辑Gradle脚本时从上下文菜单执行Gradle
> Refresh Gradle Project
命令来重新同步Gradle构建。
图5.在Eclipse Buildship中刷新Gradle项目
获得更多帮助
如果您在这里没有找到解决问题的方法,请在帮助论坛上与Gradle社区联系,或者使用help.gradle.org搜索相关的开发人员资源。
如果您认为自己在Gradle中发现了错误,请在GitHub上提交问题。