Gradle 实战

Gradle 是什么?

 Gradle™ 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML。当前其支持的语言限于 Java、Groovy 和 Scala,计划未来将支持更多的语言。 — wikipedia.org

特性

  • DSL 声明项目的配置,更加直观
  • 细粒度的传递依赖管理
  • 增量编译
  • 高效的内存执行

环境搭建

安装 Gradle

Windows

 在 Gradle 的下载页面,下载 gradle-5.4.1-all.zip 文件,解压至 D:\apps\gradle,并添加环境变量 PATH=D:\apps\gradle\gradle-5.4.1\bin

Mac

1
2
$ brew install gradle
$ brew upgrade gradle

验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 检查是否安装成功
$ gradle -v
------------------------------------------------------------
Gradle 5.4.1
------------------------------------------------------------

Build time: 2019-04-26 08:14:42 UTC
Revision: 261d171646b36a6a28d5a19a69676cd098a4c19d

Kotlin: 1.3.21
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM: 11.0.4 (Oracle Corporation 11.0.4+10-LTS)
OS: Mac OS X 10.14.6 x86_64

Gradle 代理设置

1
2
3
4
5
6
7
8
9
10
$ gradle xxx -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1080

# 或者修改 gradle.properties 配置文件
$ vim gradle.properties
systemProp.http.proxyHost=192.168.1.101
systemProp.http.proxyPort=8080
systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost
systemProp.https.proxyHost=192.168.1.101
systemProp.https.proxyPort=8080
systemProp.https.nonProxyHosts=*.nonproxyrepos.com|localhost
如果在 Kafka 源码目录下修改的 gradle.properties 无法生效,可以直接拷贝到 ~/.gradle 目录下

编译源码

1
2
3
4
5
6
7
8
# 下载依赖
$ gradle

# 增加 `-x test` 参数,可跳过单元测试
$ gradle -x test

# 随后,生成可以用 Intellij Idea 打开的工程
$ gradle idea
如果 Gradle 的配置文件里面,没有设置 idea 插件,导致项目模块无法被识别。则需要删除 .idea 文件夹,并以 build.gradle 打开为项目,即可

实战技巧

不同的项目使用的 Gradle 版本不一致

 可以使用 ./gradlew 包装器,就可以避免使用本地安装的 Gradle。Gradlew 会根据项目各自指定的 Gradle 版本进行下载,确保和项目要求的编译环境一致。常用命令如下:

1
$ ./gradlew build

运行单元测试时,报错 No Class Found

 修改 Build and run usingRun tests using 两个选项为 Gradle(默认为 IntelliJ IDEA

Configurations of Gradle in Intellij Idea for Testcases

(对 IntelliJ IDEA™ 的截图)

并发执行任务

1
2
3
4
5
6
# 修改配置文件
$ vim gradle.properties
org.gradle.parallel=true

# 执行任务时指定参数
$ ./gradlew <task> --parallel

无法正常识别 module 下的代码

1
2
3
4
# 清理所有的 IDEA 配置文件
$ ./gradlew cleanIdea
# 生成 IDEA 配置文件
$ ./gradlew idea

加载本地 jar

1
2
3
4
5
6
// 加载单个 jar 包
dependencies { compile files('libs/yuzhouwan.jar') }

// 加载多个 jar 包
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) }
dependencies { compile fileTree(dir: 'libs', include: ['yuzhouwan.jar']) }

资料

Doc

Blog

Github

欢迎加入我们的技术群,一起交流学习

群名称 群号
人工智能(高级)
人工智能(进阶)
大数据
算法
数据库