Gradle使用
Gradle相关目录
https://docs.gradle.org/current/userguide/directory_layout.html#dir:gradle_user_home
- GRADLE_HOME:Gradle安装目录
- Gradle User Home
默认 ~/.gradle或者 C:\Users\<USERNAME>\.gradle,用于存放全局配置属性,初始化脚本,缓存,日志等
可由GRADLE_USER_HOME环境变量控制
echo $GRADLE_USER_HOME # Shell
echo $env:GRADLE_USER_HOME # PowerShell
依赖管理
版本锁定 Version Catalog
https://docs.gradle.org/current/userguide/version_catalogs.html
gradle/libs.versions.toml
排除依赖
HTTP代理配置
参考官方文档:https://docs.gradle.org/current/userguide/networking.html
在 GRADLE_USER_HOME/gradle.properties 文件中配置
# 配置HTTP proxy
systemProp.http.proxyHost=hostname
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=de\\username
systemProp.http.proxyPassword=xxx
# 配置HTTPS代理
systemProp.https.proxyHost=www.somehost.org
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=userid
systemProp.https.proxyPassword=password
systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost
仓库配置
https://docs.gradle.org/current/userguide/declaring_repositories_basics.html
- 全局 init 脚本:init.gradle 中配置
- 配置项目级别的仓库地址
依赖仓库配置
默认是jcenter、可以是mavenCentral
plugins {
id 'java'
}
repositories {
// 按顺序查找,建议将常用仓库放在前面
mavenLocal() // 本地仓库
mavenCentral() // Maven 中央仓库
google() // Google 仓库
maven { // 自定义仓库
url "https://jitpack.io" // JitPack 仓库
}
maven { // 需要认证的仓库
url "https://repo.company.com/repository/maven-releases/"
credentials {
username = project.findProperty("repoUser") ?: System.getenv("REPO_USER")
password = project.findProperty("repoPassword") ?: System.getenv("REPO_PASSWORD")
}
}
}
dependencies {
implementation 'com.google.guava:guava:31.0.1-jre'
}
仓库优先级
常用仓库URL
repositories {
// 阿里云镜像(国内推荐)
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
// 华为云镜像
maven { url 'https://repo.huaweicloud.com/repository/maven' }
// 腾讯云镜像
maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
// Spring 仓库
maven { url 'https://repo.spring.io/release' }
// JitPack
maven { url 'https://jitpack.io' }
}
插件仓库配置
pluginManagement {
repositories {
gradlePluginPortal() // Gradle 插件门户
mavenCentral()
google()
maven {
url "https://plugins.gradle.org/m2/"
}
}
}
dependencyResolutionManagement {
repositories {
mavenCentral()
google()
maven {
url "https://jitpack.io"
}
}
}
rootProject.name = 'my-project'
include 'app', 'lib'
查看配置
./gradlew projects # 查看所有子项目
./gradlew tasks # 查看所有可用任务
./gradlew properties # 查看所有 Gradle 属性
./gradlew dependencies # 查看项目依赖树
./gradlew dependencyInsight --dependency <name> # 分析特定依赖
./gradlew buildEnvironment # 查看构建脚本的依赖
./gradlew build --scan # 执行构建并生成详细的构建分析报告
# 或者明确使用构建扫描插件
./gradlew build --scan --no-daemon
./gradlew --version # 显示 Gradle、JVM、OS 版本信息
./gradlew --status # 查看 Gradle 守护进程状态
./gradlew --stop # 停止所有 Gradle 守护进程
./gradlew build --info # 详细信息级别
./gradlew build --debug # 调试级别(非常详细)
./gradlew build --stacktrace # 显示堆栈跟踪
强制清除缓存
gradle build --refresh-dependencies
明确知道本地gradle仓库位置可以手动删除
一般需要删除.gradle\caches\modules-2\files-2.1和.gradle\caches\modules-2\metadata-2.71\descriptors目录下的对应jar文件就可以
Gradle Wrapper
同Maven Wrapper类似。
$MyProject\gradle
└─wrapper
└─ gradle-wrapper.properties
└─ gradle-wrapper.jar
官方的各个版本的代理下载地址:https://services.gradle.org/distributions/
如果 gradle 初次构建缓慢,可以手动下载代理放到${USER}/.gradle/wrapper/dists下
Wrapper 下载的 Gradle 发行版会缓存在本地 GRADLE_USER_HOME 目录(通常是 ~/.gradle/wrapper/dists/)中。
- gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
# 下载地址
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
- gradle-wrapper.jar:下载过程可以通过查看 gradle-wrapper.jar 中的代码查看其逻辑
常用命令
查看 Gradle Wrapper 使用的 Gradle 版本
.\gradlew -v
------------------------------------------------------------
Gradle 8.8
------------------------------------------------------------
Build time: 2024-05-31 21:46:56 UTC
Revision: 4bd1b3d3fc3f31db5a26eecb416a165b8cc36082
Kotlin: 1.9.22
Groovy: 3.0.21
Ant: Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM: 17.0.7 (Oracle Corporation 17.0.7+8-LTS-224)
OS: Windows 11 10.0 amd64
下载缓慢问题
修改了gradle-wrapper.properties中使用的版本后,点击Sync Projects,会去下载对应版本的gradle
解决办法
- 开VPN
- 使用镜像地址下载,更换url中具体的版本即可,以8.8版本为例:
(1)官网地址:https://services.gradle.org/distributions/gradle-8.8-bin.zip
(2)腾讯镜像 Gradle下载地址:https://mirrors.cloud.tencent.com/gradle/gradle-8.8-bin.zip
(3)阿里云镜像 Gradle下载地址:https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.8-bin.zip
distributionUrl=https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.8-bin.zip
- 到官网下载https://services.gradle.org/distributions/,注意下载名字带
-bin的压缩包,这个是二进制包。直接下载的链接:https://services.gradle.org/distributions/gradle-8.6-bin.zip,替换成想要的版本号即可。
下载过后,找到 $GRADLE_USER_HOME\wrapper目录,找到对应版本,放入你完整下载的Gradle安装包并解压。如下所示:
➜ $GRADLE_USER_HOME\wrapper> tree .
└─dists
├─gradle-8.14-bin
│ └─38aieal9i53h9rfe7vjup95b9
│ └─gradle-8.14 # 压缩包解压后的根目录
│ ├─bin
│ ├─init.d
│ └─lib
│ ├─agents
│ └─plugins
├─gradle-8.2-bin
│ └─bbg7u40eoinfdyxsxr3z4i7ta
gradle文件夹的绝对路径下没有对应Gradle版本的文件夹和一长串字符的文件夹,一长串字符的文件夹是必须要用开始下载该版本的Gradle安装包才生成的。所以如果没有这个一长串字符的文件夹,需要先进行一次下载操作。只要下载的内容大小有超过0.01MB,就能看见这个一长串字符的文件夹了,接着你就可以关闭Intellij Idea,找到这个一长串字符的文件夹,删除未下载完的临时文件,并放入你完整下载的Gradle安装包并解压,再打开Intellij Idea就会直接跳过该版本的Gradle下载过程啦,直接进入项目构建环节了。
如果按上面操作,重新打开Idea,刷新gradle时,出现Read Timeout,需要删除一长串字符的文件夹,重新生成一次,然后再按上述步骤再来一次
Idea配置 HTTP 代理
配置入口:File | Settings | Appearance & Behavior | System Settings | HTTP Proxy

配置如下:
- Host name为代理地址
- Login、Password分别为代理访问用户名及密码
通过Check connection输入请求地址,如果是访问外网,可以尝试直接访问 youtube 或者 google 来验证:https://www.youtube.com/
构建配置
本地建立文件 gradle.properties 或者在用户的 .gradle目录下建立 gradle.properties 文件作为全局设置,参数有
# 开启并行编译
org.gradle.parallel=true
# 开启守护进程
org.gradle.daemon=true
# 按需编译
org.gradle.configureondemand=true
# 设置编译jvm参数
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# 设置代理
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=10384
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=10384
# 开启JNI编译支持过时API
android.useDeprecatedNdk=true
构建问题排查
--stacktrace:
--info:
--debug:输出 debug 日志
--scan
Debug断点执行
-Dorg.gradle.debug=true --no-daemon
例如:gradle nameOfTask -Dorg.gradle.debug=true --no-daemon
常用构建命令
# 查看任务
./gradlew tasks
# 查看所有任务 包括缓存任务等
./gradlew tasks --all
# 对某个module [moduleName] 的某个任务[TaskName] 运行
./gradlew :moduleName:taskName
# 查看构建版本
./gradlew -v
# 清除build文件夹
./gradlew clean
# 检查依赖并编译打包
./gradlew build
# 编译并安装debug包
./gradlew installDebug
# 编译并打印日志
./gradlew build --info
# 译并输出性能报告,性能报告一般在 构建工程根目录 build/reports/profile
./gradlew build --profile
# 调试模式构建并打印堆栈日志
./gradlew build --info --debug --stacktrace
# 强制更新最新依赖,清除构建并构建
./gradlew clean build --refresh-dependencies
常见问题
- 卡在 Importing Project 阶段

- 更换仓库地址后不生效
当第一次下载依赖失败时,更换仓库地址后,还是报错上次的仓库地址,已确认未使用报错信息里的仓库地址
A problem occurred configuring project ':mybatisx-plugin'.
> Could not resolve all artifacts for configuration ':mybatisx-plugin:classpath'.
> Could not find structure-base-3.318.jar (org.jetbrains.intellij.plugins:structure-base:3.318).
Searched in the following locations:
https://maven.aliyun.com/repository/public/org/jetbrains/intellij/plugins/structure-base/3.318/structure-base-3.318.jar
Possible solution:
- Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html
- The request for this plugin could not be satisfied because the plugin is already on the classpath with an unknown version, so compatibility cannot be checked.
https://github.com/gradle/gradle/issues/20084
- gradle构建脚本飘红, 报错: cannot resolve buildScript, 但是可以正常运行
清除Idea缓存,Invalid Caches and Restart,重启后重新刷新
- org.gradle.api.internal.provider.MissingValueException: Cannot query the value of this provider because it has no value available.

浙公网安备 33010602011771号