第一模块:课程介绍
课程名称:新一代构建工具gradle
课程章节:2-4 groovy基础知识-高效特性
主讲老师:skyding
第二模块:课程内容
了解Gradle的高效特性
第三模块:课程收获
Gradle高效特性
- 可选的类型定义
示例代码:
// 1 可选的类型定义
def version = 1;
在idea中,这个version的类型会被编译器进行推断,然后显示出来。
可以看到,后面跟了一个Integer的类型推断
- assert断言
示例代码
// 2 assert
assert version == 2
在groovy中,assert是可以在任何时候执行的。
- 可选的括号
示例代码:
// 3 可选的括号
// 带括号
println(version)
// 不带括号
println version
这两个代码都可以正常打印内容出来
- 字符串
// 字符串
def s1 = 'imooc'
def s2 = "gradle"
def s3 = '''hello world'''
这三种有什么区别呢。
第一种:单引号,这个是存粹的字符串
第二种:双引号,这个可以插入其他的变量
def s2 = "gradle${version}"
第三者:三引号,在字符串内可以换行,类似于JDK17中的三引号
def s3 = '''hello
world'''
- 集合API List和Map
List示例代码
// List
def buildTools = ['ant', 'maven']
// 追加元素
buildTools << "groovy"
assert buildTools.getClass() == ArrayList
assert buildTools.size() == 3
Map示例代码
// Map
def buildYears = ['ant': 200, 'maven': 2004]
// 新增元素
buildYears.gradle = 2009
println buildYears['gradle']
Map对应的Java中的class java.util.LinkedHashMap
- 闭包
简单来说,就是一个代码块,可以有参数,也可以没参数,可以被赋值给一个变量,也可以当参数传递给一个方法
在groovy构建脚本中,闭包一般用来当成参数使用
示例代码:
// 闭包
def c1 = {
v -> print v
}
def c2 = {
print 'hello'
}
def method1(Closure closure){
closure('params')
}
def method2(Closure closure){
closure()
}
method1(c1)
method2(c2)
执行上面的代码会在控制台打出paramshello
groovy构建脚本介绍
先看一个简单的构建脚本
apply plugin: 'java'
version = '0.1'
repositories {
mavenCentral()
}
dependencies {
compile 'commons-codec:commons-codec:1.6'
}
// 每个构建脚本都有一个project的实例
// apply是一个方法,是project实例中的一个属性,这句话就是声明了一个plugin这个参数的值等于Java
apply plugin: ‘java’ -> apply(plugin: ‘java’)
repositories是一个闭包,里面作为一个参数,调用这个方法
dependencies 也是一个闭包,依赖管理的,作为参数调用这个方法