Gradle使用指南


发布于 2025-08-23 / 5 阅读 / 0 评论 /
Gradle使用指南和经验

Gradle配置

Gradle项目一般包含以下配置目录和配置文件。

gradle-wrapper目录

首先Wrapper是对Gradle的一层包装,便于开发过程中统一Gradle构建的版本号,Gradle提供内置的Wrapper task帮助我们自动生成Wrapper所需的目录文件

gradle-wrapper.properties

这个文件用于配置gradle包的信息,配置例如下所示

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531
distributionUrl=file:///data/tools/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

字段说明如下表所示

字段

说明

distributionBase

下载Gradle压缩包解压后存储的主目录

distributionPath

相对于distributionBase解压后的压缩包的位置

zipStoreBase

和distributionBase类似,区别是存放zip压缩包

zipStorePath

和distributionPath类似,区别是存放zip压缩包

distributionUrl

gradle压缩包的下载地址

distributionSha256Sum

gradle压缩包的校验码

gradle.properties

Gradle属性配置文件,有以下作用:

(1)设置JVM参数(org.gradle.jvmargs、org.gradle.java.home)

(2)启用并行构建(org.gradle.parallel)

(3)启用构建缓存(org.gradle.caching)

(4)配置编码格式

(5)配置系统参数

例如下所示:

jmhOutputPath=build/reports/jmh/human-readable-output.txt
jmhJsonOutputPath=build/reports/jmh/results.json
jmhIncludeRegex=.*
systemProp.defaultFlinkVersions=1.20
systemProp.knownFlinkVersions=1.18,1.19,1.20
systemProp.defaultSparkVersions=3.5
systemProp.knownSparkVersions=3.4,3.5
systemProp.defaultKafkaVersions=3
systemProp.knownKafkaVersions=3
systemProp.defaultScalaVersion=2.12
systemProp.knownScalaVersions=2.12,2.13
# enable the Gradle build cache - speeds up builds!
org.gradle.caching=true
# enable Gradle parallel builds
org.gradle.parallel=true
# configure only necessary Gradle tasks
org.gradle.configureondemand=true
# explicitly disable the configuration cache
org.gradle.configuration-cache=false
org.gradle.jvmargs=-Xmx1024m
org.gradle.java.home=/data/jdks/jdk1.8.0_271

settings.gradle

配置模块名称和模块依赖的引入信息

build.gradle(Project)

build.gradle文件中的代码都是Groovy语言,Groovy是基于JVM虚拟机的一种动态语言,它的语法和Java非常相似,它就是一门非常灵活的动态脚本语言。

项目级的build.gradle配置文件包含以下内容:

(1)buildscript

buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等.

(2)ext

ext是自定义属性,本人现在喜欢将所有module公用的编译版本号,当前编译工具版本等公用的信息进行在project的build.gradle中进行自定义给所有module使用同一版本,方便管理。当然你也可以自定义一个Version.gradle文件,这样也可以在其中添加常用三方依赖库的版本信息,方便module统一调用

(3)repositories

repositories顾名思义就是仓库,而jcenter()、maven()和google()就是托管第三方插件的平台,平时开发中我们可能会遇到一些插件需要访问外国网站,也是在此配置。

buildscript中的repositories和allprojects中的repositories有什么区别呢?

buildscript中的声明是gradle脚本自身需要使用的资源,而allprojects声明的却是你所有module所依赖的资源,比如你的每个module都需要用同一个第三库的时候,你可以在allprojects里面声明。

(4)dependencies

我们配置了repositories仓库后还需要在dependencies{}里面进行配置,把需要配置的依赖用classpath配置上,因为这个dependencies在buildscript{}里面,所以代表的是Gradle需要的插件。

build.gradle(Module)

模块级的build.gradle,仅在当前模块及自模块生效。

使用经验

在配置Gradle的时候,有以下经验可参考

自定义gradle版本

一般有一个gradle-wrapper.properties文件,用于指定gradle包的信息。在此文件中可自定义gradle版本,配置如下所示:

distributionSha256Sum=bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531
distributionUrl=file:///data/tools/gradle-8.14.3-bin.zip

此处配置使用本地的gradle-8.14.3-bin.zip包,同时需要指定对应的sha256校验码。也可以从远程下载。

自定义jdk版本

可以在gradle.properties中自定义gradle使用的java_home,如下所示:

org.gradle.java.home=/data/jdks/jdk1.8.0_271

配置参数为org.gradle.java.home

自定义Maven仓库

Gradle中可以使用Maven仓库,用于下载gradle插件和项目所依赖的jar包,可能会遇到包不存在或者无法下载的情况,此时可以添加自定义的maven仓库,用于下载当前仓库无法下载的包。如下所示:

  repositories {
    gradlePluginPortal()
    maven {
      url "https://maven.aliyun.com/repository/gradle-plugin/"
    }
  }

以上新增gradle插件的下载仓库。