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
字段说明如下表所示
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插件的下载仓库。