Gradle自动化构建项目

本文详细介绍了Gradle的使用,包括构建文件结构、任务创建、属性配置、插件应用和依赖管理。通过gradle命令行工具,可以指定构建文件、执行任务,并利用incremental build特性提高构建效率。同时,文章探讨了如何自定义Task和插件,以及如何配置不同类型的依赖组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gradle简介

Gradle 是新一代的自动化构建工具。本文参考《疯狂Android讲义 kotlin版》一书,将简单介绍一些gradle的使用。

Gradle构建文件和创建任务

指定构建文件

运行gradle命令时没有指定任何参数,Gradle会在当前目录下搜索build.gradle文件,以其作为构建文件,并执行指定任务。
可以使用gradle -b <构建文件>的命令来使用其他构建文件。

Gradle构建文件的结构

Project:通常一个构建文件代表一个项目(代表当前目录下的项目),其包含大量属性和方法。
TaskContainer:任务容器。每个Project都会维护一个TaskContainer类型的tasks对象。
Task:gradle要执行的一个任务。
Action:task中运行阶段执行的代码块。

Gradle构建过程

第一阶段:配置阶段,gradle会读取构建文件(build.gradle)的全部内容来配置Project和Task;
第二阶段:按依赖关系执行指定Task。

显式执行指定任务

gradle [task1[task2[task3…]]]
运行结果:仍会先执行构建文件的配置部分,然后才执行Task中的Action

创建Task的常用方法

调用Project的task()方法创建Task;
调用TaskContainer的create()方法创建Task。

创建Task的常用步骤

通过传入的代码块参数配置Task;
可以通过Task的doFirst、doLast方法指定Action的执行顺序。

可以通过Project自带的TaskContainer类型的tasks对象的create方法来创建Task
通过crate方法的name参数指定该Task的名称;
通过crate方法的dependsOn参数指定该Task所依赖的其他Task;
通过crate方法的type参数指定该Task的类型。

也可以通过task 任务名的方式创建Task;
然后通过代码块配置Task的参数。

常见的任务类型

Copy:拷贝,指定from(从哪复制)、into(复制到哪)等参数;
JavaCompile:编译,指定source(编译的源代码目录)、destinationDir(编译后的字节码文件保存位置)等参数;
JavaExec:执行文件,指定main文件(指定入口文件,通常编写一些插件会用到)。
待续

Gradle的属性

为已有属性指定属性值

常用属性:name、path、description、buildDir、version;实际意义不大,很少配置。

添加属性

通过ext添加属性

在构建文件中(即代表当前目录下的project)通过ext.prop1 = 'xxx’即可添加project的属性;
在构建文件中(即代表当前目录下的project)通过代码块

ext {
	prop1 = 'xxx'
	prop2 = 'xxx'
}

的形式添加project的属性。

在task中(即task配置中)通过ext.prop1 = 'xxx’即可添加task的属性;
在task中(即task配置中)通过代码块

ext {
	prop1 = 'xxx'
	prop2 = 'xxx'
}

的形式添加task的属性。

通过运行gradle命令时-P、-D选项来添加属性

只能添加Project属性,-D代表Project的JVM属性。

增量式构建

通过指定task的输入输出配置,只要指定的输入配置及其属性都不变化,那么gradle就认为该任务的输入没有改变,第二次执行该命令时不再真正执行该任务。

Gradle插件

通过引用gradle插件,即可引入已经编辑完成的构建文件(仍代表当前目录下的项目),提高效率;
通过引用gradle插件,也可以为gradle插件配置属性及调用方法:
例如常见的java、application、library等插件,为其指定sourceSets对象属性,这些插件的task会用到这些属性(当然不配置也会有默认值)。如何配置这些插件是主要学习的地方。

一些常见插件的配置

待补充

自定义插件(构建文件)

在build.gradle中自定义插件类,并引用;
通过groovy文件类的形式,通过含包名的类引用;
新建一个module,制作一个库(插件),并引用
可以参考本地磁盘maven仓库的使用以及点击事件埋点

自定义任务类型

其他任务可指定为自定义任务类型即可调用该自定义任务的方法。

在build.gradle中自定义任务(即自定义任务类型,通过继承DefaultTask类)
通过groovy文件类的形式,通过含包名的类引用;
新建一个module,制作一个库(插件),并引用。

依赖管理

依赖管理是gradle自带的属性对象。gradle既可以从远程仓库或者本地仓库(远程也会先下载到本地)依赖jar包,也可以直接引用项目路径下的jar包。

配置依赖的步骤

1、为Gradle配置仓库;
2、为不同的组配置依赖jar包。

依赖配置中组的概念

通过配置project的configurations属性配置组名,而组名通常会被task引用,然后该组名下所依赖的jar成了某一类型task或某一些类型task所依赖的jar包。

常见依赖组:
implementation:主项目源代码(src/main/java,也可通过sourceSets配置)所依赖的组;
compileOn:主项目源代码(src/main/java,也可通过sourceSets配置)编译时才依赖的组;
runtimeOnly:主项目源代码(src/main/java,也可通过sourceSets配置)运行时才依赖的组;
testImplementation:项目测试代码(src/test/java,也可通过sourceSets配置)所依赖的组;
testCompileOn:项目测试代码(src/test/java,也可通过sourceSets配置)编译时才依赖的组;
testRuntimeOnly:项目测试代码(src/test/java,也可通过sourceSets配置)运行时才依赖的组;
archives:项目打包时依赖的组,可用于制作jar包等
编辑于2019年6月29日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值