gradle-问题备忘
一、安装
- 下载
- 解压
- 配置系统变量
%GRADLE_HOME%
指向解压路径,配置 path 变量,添加%GRADLE_HOME%\bin
。 - 测试,输入命令
gradle -v
提示版本说明配置成功。
环境变量也可以不配置,在 IDE 中(如 Idea)指定路径即可。
二、异常及报错的解决方案汇总
⭐ 本地仓库配置参考
1 | repositories { |
⭐ 指定编译版本
可选,在 Idea 中可独立配置。
1 | sourceCompatibility = 1.8 |
⭐ 显示指定依赖版本
1 | configurations.all { |
⭐ 如果使用了中文注释,编译时报错
添加 withType,编译时用 UTF-8 处理。
1 | tasks.withType(JavaCompile) { |
Gradle 强制刷新依赖
问题描述
旧项目更换环境时由于 gradle 版本不一致导致项目初始化失败。
解决方案
强制刷新依赖,步骤如下:
1、删除 .gradle
目录,其中包含了旧版本的文件。
2、修改 gradle-wrapper.properties
文件的版本号,内容如下。例如旧环境使用 6.0.1,新环境使用 6.7.1
1 | distributionBase=GRADLE_USER_HOME |
注意:仅修改版本即可,其他内容不变。
3、项目目录下执行如下命令
macOS:
./gradlew build --refresh-dependencies
windows:
gradlew build --refresh-dependencies
1 | $ ./gradlew build --refresh-dependencies |
扩展
gradlew -? 或 -h 或 --help
,显示帮助信息,即会打印可选参数及参数说明信息;
gradlew --version
,版本号(会打印工程用的 Gradle 的版本号、Kotlin、Groovy、Ant、JVM、OS 等的版本号);
gradlew tasks --all
,查看所有任务,包括缓存任务等;
gradlew clean
,清除工程目录下的 build 文件夹;
gradlew build
, 检查依赖并编译打包,debug、release 环境的包都会打出来;
gradlew assemble**_
,编译指定的包,如 Debug 包(gradlew assembleDebug)、Release 包(gradlew assembleRelease)、渠道包(gradlew assembleOemRelease/assembleOemDebug)、定制的版本等等;
gradlew install_**
,编译并安装指定的包,如 Debug 包(gradlew installDebug)、Release 包(gradlew installOemRelease/installOemDebug)、定制的版本等等;
gradlew uninstall\*\*
,卸载已安装的指定模式的包,如 Debug 包(gradlew uninstallDebug)、Release 包(gradlew uninstallRelease)、渠道包(gradlew uninstallOemRelease/uninstallOemDebug)、定制的版本等等;
gradlew :模块名称:dependencies
,查看包依赖关系,如 gradlew :app:dependencies
;
gradlew build -i 或 --info -d 或 --debug -s 或 --stacktrace
,编译(build)并打印 debug 模式和 info 等级的日志及所用异常的堆栈信息(–stacktrace);
gradlew --refresh-dependencies
,强制刷新依赖,即检查依赖是否有更新比如动态版本、SHA1 进行本地 cache 和远程仓库散列码的对比等,有更新则下载更新进行构建;使用这种方式可以避免手动删除 cache;
gradlew clean build --refresh-dependencies
,组合指令,清除构建(gradlew clean)并重新构建(gradlew build),同时强制刷新依赖(gradlew –refresh-dependencies);
gradlew --offline
,离线模式,即让 Gradle 只使用本地 cache 里的依赖,如果 cache 中没有也不会更新依赖,而是提示编译失败;
--info
,打印堆栈信息;
gradlew --daemon
,守护进程,使用 Gradle 的守护进程构建,能够提高构建效率,如果守护进程没启动或现有的都处于忙碌状态,就启动一个守护进程;
gradlew --no-daemon
,如果你已经配置为使用守护进程构建,可以使用该选项本次不用守护进程构建;
gradlew --continuous
,连续构建,即任务队列中即使某个任务失败,不会终止执行,而是会继续执行下一个任务;
gradlew --parallel --parallel-threads=N
,并行编译;
gradlew --configure-on-demand
,按需编译。
其他
gradlew 的指令有简写的方式:
gradlew --versio n
可以用简写方式 gradlew -v 代替
gradlew --hel p
可以用简写方式 gradlew - h
或 gradlew -?
代替
gradlew --no-rebuil d
可以用简写方式 gradlew - a
代替
gradlew --debu g
可以用简写方式 gradlew - d
代替
gradlew --stacktrac e
可以用简写方式 gradlew -s
代替
可以发现简写的指令只需要一个减号(-
)开头,没有简写的指令需要用两个减号(即 --
)开头。