Gradle命令逆向剖析
很多人很好奇,我们是怎么知道那么多 Gradle 命令的。你随便跑一遍 gradle tasks
,是不是发现输出的 task 简直“爆炸”:
# 一、常用 Gradle 逆向调试方法
# 1.1 基础命令梳理
常用命令 | 说明 |
---|---|
gradle tasks | 列出所有支持的 Task 和分组 |
gradle <task> --info | 输出详细 task 执行日志 |
gradle <task> --debug | 输出调试级别完整执行轨迹 |
gradle <task> -m | 只显示将要执行哪些 task(不实际执行) |
gradle dependencies | 分析依赖树 |
提示
对于大数据平台、Bigtop/Spark/Hadoop/Hive 编译链路,gradle tasks
+ --info/--debug
是最基础的逆向入口。
# 1.2 真实日志溯源与实操解读
比如执行 gradle tasks
得到的日志输出(部分片段):
ranger-pkg-ind -Pnexus=[true|false][-Ppreferred-java-version=[8|11]][-Pmvn-cache-volume=[true|false]]
ranger-relnotes - Preparing release notes for ranger. No yet implemented!!!
ranger-rpm - Building RPM for ranger artifacts
ranger-sdeb - Building SDEB for ranger artifacts
ranger-spkg - Invoking a native binary packaging target srpm
ranger-srpm - Building SRPM for ranger artifacts
ranger-tar - Preparing a tarball for ranger artifacts
ranger-version - Show version of ranger component
realclean - Removing /opt/modules/bigtop/build, /opt/modules/bigtop/output, /opt/modules/bigtop/dist, and /opt/modules/bigtop/dl
redis-clean - Removing redis component build and output directories
redis-deb - Building DEB for redis artifacts
redis-download - Download redis artifacts
redis-help - List of available tasks for redis
redis-info - Info about redis component build
redis-pkg - Invoking a native binary packaging target rpm
redis-pkg-ind - Invoking a native binary packaging for redis in Docker. Usage: $ ./gradlew -POS=[centos-7|fedora-35|debian-10|ubuntu-18.04] -Pprefix=[trunk|1.4.0|1.3.0|1.2.1
|...] redis-pkg-ind -Pnexus=[true|false][-Ppreferred-java-version=[8|11]][-Pmvn-cache-volume=[true|false]]
redis-relnotes - Preparing release notes for redis. No yet implemented!!!
redis-rpm - Building RPM for redis artifacts
redis-sdeb - Building SDEB for redis artifacts
redis-spkg - Invoking a native binary packaging target srpm
redis-srpm - Building SRPM for redis artifacts
redis-tar - Preparing a tarball for redis artifacts
redis-version - Show version of redis component
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
日志解读
- 每一行都是一个 gradle 任务(task),包括常见的 -rpm、-srpm、-deb、-clean、*-info 等等
- 比如
redis-rpm
、spark-tar
、solr-help
,都是可被单独执行和定制化扩展的任务节点 - 右侧的描述或 Usage,往往会提示 task 背后实现的功能或依赖参数
- 这些任务实际在 build.gradle、packages.gradle 等核心脚本中以
task xxx
方式定义
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16