# 基于Groovy的新一代构建工具,Gradle
## 目录
- 第1章 课程介绍
- 第2章 准备使用Gradle
- 第3章 第一个Gradle项目
- 第4章 高级应用
- 第5章 课程总结
## 第1章 课程介绍
### 1-1项目自动化介绍(03:29)
- 1. 构建工具的作用
- - ◆依赖管理
- - ◆测试、打包、发布
- - ◆机器能干的活,绝不自己动手
- 2. 主流共构建工具(图)
- 3. Gradle是什么
- 一个开源的项目自动化构建工具,建立在Apache Ant和Apache Maven概念的基础上,并引入了基于Groovy的特定领域语言( DSL) ,而不再使用XML形式管理构建脚本
### 1-2课程介绍(02:09)
## 第2章 准备使用Gradle
### 2-1 gradle安装(05:42)
- 1. 安装
- 配置环境变量,
- GRADLE HOME
- ◆添加到path , %GRADLE_ _HOME%\bin;
- ◆验证是否安装成功, gradle -V
### 2- -2 groovy基础知识-理论介绍(02:47)
- 1. Groovy是什么
- Groovy是用于Java虚拟机的一种敏捷的动态语言, 它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。
- 2. 与Java比較
- - ◆Groovy完全兼容Java的语法
- - ◆分号是可选的
- - ◆类、方法默认是public的
- - ◆编译器给属性自动添加getter/setter方法
- - ◆属性可以直接用点号获取
- - ◆最后一个表达式的值会被作为返回值
- - ◆==等同于equals(),不会有NullPointerExceptions
- 3. 高效的Groovy特性
- - ◆assert语句
- - ◆可选类型定义
- - ◆可选的括号
- - ◆字符串.
- - 集合API .
- - 闭包
### 2-3 groovy基础知识-与java比较(05:38)
参考附录 Groovy 语言快速入门
### 2-4 groovy基础知识-高效特性(10:55)
参考附录 Groovy 语言快速入门
### 2- 5 groovy基础知识-重点(01:46)
参考附录 Groovy 语言快速入门
## 第3章 第一个Gradle项目
### 3-1 第一个gradle项目-介绍(02:01)
### 3-2 TODO-应用程序版本(08:34)
参考视频
### 3- -3 TODO -WEB版(05:26)
参考视频
## 第4章 高级应用
### 4-1构建脚本介绍(08:50)
- 构建块
- Gradle构建中的两个基本概念是项目( project )和任务(task)每个构建至少包含一个项目, 项目中包含一个或多个任务。在多项目构建中, -个项目可以依赖于其他项目;类似的,任务可以形成一个依赖关系图来确保他们的执行顺序
- 项目(project)
- - -个项目代表-个正在构建的组件(此如一 个jar文件) ,当构建启动后, Gradle会基于build.gradle实例化一个org.gradle.api.Project类,并且能够通过project变量使其隐式可用.
- - group.
- - name. version
- - apply. dependencies. repositories. task
- - 属性的其他配置方式: ext、gradle.properties
- 任务(task)
- - 任务对应org.gradle.api.Task.主要包括任务动作和任务依赖。任务动作定义了一个最小的工作单元。可以定义依赖于其他任务、动作序列和执行条件。
- - dependsOn
- - doFirst、doLast
### 4-2自定义任务(06:47)
### 4-3构建生命周期(03:45)
### 4-4 依赖管理(12:03)
- 概述
- 几乎所有的基于JVM的软件项目都需要依赖外部类库来重用现有的功能。自动化的依赖管理可以明确依赖的版本可以解决因传递性依赖带来的版本冲突。
- 常用仓库
- - ◆mavenLocal/mavenCentral/jcenter
- - ◆自定义maven仓库
- - ◆文件仓库
- 依赖的传递性
- - ◆B依赖A ,如果C依赖B ,那么C依赖A
- 依赖阶段配置
- - compile、runtime
- - testCompile、testRuntime
- 依赖阶段关系(图)
### 4-5 解决版本冲突(07:20)
- 解决冲突
- 查看依赖报告
- 排除传递性依赖
- ◆强制一个版本
- 修改默认解决策略
configurations.all {
resolutionStrategy {
failOnVersionConflict()
}
}
### 4-6 多项目构建介绍(07:03)
- 项目模块化
- 在企业项目中,包层次和类关系比较复杂,把代码拆分成模块通常是最佳实践,这需要你清晰的划分功能的边界,比如把业务逻辑和数据持久化拆分开来。项目符合高内聚低耦合时,模块化就变得很容易,这是一条非常好的软件开发实践
- 配置子项目
- 配置要求.
- - ◆所有项目添加logback日志功能
- - ◆统一配置公共属性
### 4-7多项目构建实战(09:21)
### 4-8自动化测试(06:44)
- 自动化测试
- 一些开源的测试框架比如JUnit, TestNG能够帮助你编写可复用的结构化的测试,为了运行这些测试,你要先编译它们,就像编译源代码一样。测试代码的作用仅仅用于测试的情况,不应该被发布到生产环境中,需要把源代码和测试代码分开来。
- 项目布局(图)
- 测试发现
- - ◆任何继承自junit.framework.TestCase或groovy.util.GroovyTestCase的类
- - ◆任何被 @RunWith注解的类
- - ◆任何至少包含一个被@Test注解的类
### 4-9发布(04:19)
## 第5章 课程总结
### 5-1 6课程总结(02:47)
## 参考资料
- [新一代构建工具gradle](https://www.imooc.com/learn/833)
- [Groovy 语言快速入门](https://www.jianshu.com/p/e8dec95c4326)