——《实战Gradle》中文版笔记
注:本篇主要以相关概念和结构的介绍为主,实战构建可参考此篇:https://blog.csdn.net/qq_41094332/article/details/104086382
1、任务管理用例
每个任务管理系统都是由一个有序的执行项目或者任务列表组成的。每个任务都有一个标题来表示需要完成的事情。任务可以在列表中添加和删除,以及标记为活动或者完成状态。列表也应该允许修改任务标题,以便让描述更加精确。当一个任务发生改变时应该自动地持久化到数据库中。
2、构建Java项目
2.1 使用Java插件
在build.gradle的文件开始,在里面添加要使用Java插件:
apply plugin: 'java'
在默认情况下,插件会到src/main/java目录下查找。
2.2 构建项目
Java插件提供的一个任务叫build,这个build任务会以正确的顺序编译你的源代码,运行测试,组装JAR文件。运行gradle build命令,会得到类似于下面的输出:
每一行输出都代表着Java插件提供的一个可执行任务。其中,某些任务被标记为UP-TO-DATE消息,这意味着这个任务被跳过了。Gradle的增量式构建支持自动鉴别不需要被运行的任务。
下面是构建之后项目的结构:
在项目的根目录下的build目录,其中包含了构建运行的所有输出,包括class文件、测试报告和JAR文件,还有一些像清单(manifest)一样的对构建有用的临时文件。它和Maven中的一个标准的输出目录target结构所类似。构建输出目录的名字是可配置的属性。
JAR文件生成在build/libs目录下,而且是可运行的。
2.3 运行项目
3、定制项目
3.1 修改项目和插件属性
3.2 改造遗留项目
4、配置和使用外部依赖
4.1 定义仓库
在Java世界,依赖都是以JAR文件的形式发布和使用的。许多类库都可以在仓库中找到,Gradle要求定义至少一个仓库来使用依赖,例如Maven Central:
repositories{
//配置对Maven Central 2 仓库http://repol.maven.org/maven2 访问的快捷方式
mavenCentral()
}
4.2 定义依赖
一个依赖是通过group标识符、名字和一个指定版本来确定的,例如:
dependencies {
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.1'
}
在Gradle中,依赖是由configuration分组的。Java插件引入的一种configuration是compile。可以通过configuration的名字看出它是给编译源代码使用的。
4.3 解析依赖
Gradle会自动检测到一个新的依赖添加到项目中。如果依赖没有被成功解析,那么就会在下一个需要使用该依赖的任务启动时去下载它——以下例子中就是compileJava任务:
5、Gradle包装器
它是Gradle的核心特性,能够让机器在没有安装Gradle运行时的情况下运行Gradle构建,它也让构建脚本运行在一个指定的Gradle版本上。它是通过自动从中心仓库下载Gradle运行时,解压和使用来实现的。最终的目的是创造一个独立于系统、系统配置和Gradle版本的可靠和可重复的构建。
5.1 配置包装器
在项目中配置包装器,需要做两件事:创建一个包装器任务和执行任务生成包装器文件。
为了能够让项目可以下载压缩过的Gradle运行时文件,定义一个类型为Wrapper的任务,通过gradleVersion属性指定你想要的Gradle版本:
5.2 使用包装器
作为包装器发布内容的一部分,它提供了一个命令中心脚本。对于linux系统,它是一个叫作gradle的shell脚本;对于Windows操作系统,它是gradlew.bat。使用它们运行构建和使用已安装的Gradle运行构建是一样的。
发布的压缩文件从Gradle项目维护的中心服务器上下载下来,存储在本地文件系统的$HOME_DIR/.gradle/wrapper/dists目录下。Gradle包装器也会负责解包该发布文件并设置相应的权限来执行该批处理文件。下载过程只需要执行一次。后续的构建运行都会重用这个解包的运行时安装程序:
5.3 定制包装器
6、总结
我们从使用Gradle自带的Java创建起步。将插件应用到项目中可以添加预配置的任务和含有默认约定的框架包装的标准化项目结构。灵活的约定满足了定制项目的需求。通过引入插件,我们了解了如何通过选项定制默认约定。通过Gradle DSL和API文档了解这些选项的更多内容。
参考书籍:《实战Gradle》中文版,李建等人译