返回

Gradle 精简教程:掌握实用操作,不再依赖学习

Android

即使不深入钻研 Gradle 的复杂体系,你仍然可以掌握一些必备的操作,让你的构建过程更加高效。以下是你需要了解的关键操作:

提取模板代码

这是最基础的操作之一。对于一个标准的 model.gradle,默认配置如下:

model {
    tasks {
        register('myTask') {
            doLast {
                println 'Hello from myTask'
            }
        }
    }
}

如果我们每个模型都这样编写,岂不是很繁琐?因此,让我们提取通用代码:

import org.gradle.api.Plugin
import org.gradle.api.Project

class MyPlugin implements Plugin<Project> {
    @Override
    void apply(Project project) {
        project.task('myTask') {
            doLast {
                println 'Hello from myTask'
            }
        }
    }
}

优化步骤

新建一个 gradle 插件

plugins {
    id 'java-gradle-plugin'
}

编写插件实现

import org.gradle.api.Plugin
import org.gradle.api.Project

class MyPlugin implements Plugin<Project> {
    @Override
    void apply(Project project) {
        project.task('myTask') {
            doLast {
                println 'Hello from myTask'
            }
        }
    }
}

将插件应用到项目

apply plugin: 'my-plugin'

模块化 Gradle 脚本

大型项目通常会将构建逻辑分解为多个模块化的脚本。这可以提高可读性、可维护性和可重用性。

创建子构建文件

// settings.gradle
include ':module-a'
include ':module-b'

编写模块构建脚本

// module-a/build.gradle
task aTask {
    doLast {
        println 'Hello from module A'
    }
}
// module-b/build.gradle
task bTask {
    doLast {
        println 'Hello from module B'
    }
}

Gradle 依赖管理

声明依赖关系

dependencies {
    implementation 'com.google.guava:guava:31.1-jre'
}

使用依赖项

import com.google.common.base.Strings;

public class Main {
    public static void main(String[] args) {
        System.out.println(Strings.isNullOrEmpty("hello"));
    }
}

Gradle 自定义任务

创建自定义任务

task hello {
    doLast {
        println 'Hello from custom task'
    }
}

执行自定义任务

gradle hello