Gradle 自动构建工具的使用(一)之groovy的学习

1.Gradle

gradle使用 groovy 这种基于JVM的敏捷开发语言,groovy比java 更简洁,是作为java
的一种脚本语言来使用。使用gradle 我们必须先了解和熟悉groovy语言

最早的构建工具 ant 然后近几年流行的maven 包含了ant 最后gradle包含了maven 是新一代的构建工具 在国外比较火

2.groovy 与java的区别

我们来看一个groovy的入门demo

public class ProjectVersion{
    private int major; //大版本
    private int minor; //小版本

    //groovy不写是默认public  java不写是默认default
    //groovy 可以不写分号
    //最后一个表达式的值就是返回的值 可以 不写return
    //== 不会抛出空指针异常 groovy的 == 调用的是equals方法

    public ProjectVersion(int major,int minor){
        this.major=major;
        this.minor=minor;

    }
    public int getMajor() {
        return major
    }

    public void setMajor(int major) {
        this.major = major
    }

    public int getMinor() {
        return minor
    }

    public void setMinor(int minor) {
        this.minor = minor
    }

}

ProjectVersion v1=new ProjectVersion(1,1);
print v1.minor

ProjectVersion v2=null;

println v2==v1;

区别:

groovy不写是默认public java不写是默认default
groovy 可以不写分号
最后一个表达式的值就是返回的值 可以 不写return
== 不会抛出空指针异常 groovy的 == 调用的是equals方法

3.gradle 的高效特性
(1)可选的定义类型


  def version=1

不用使用int 等去定义变量的类型 类似于 javascript的var

(2)assert 断言

assert  version==2

得到控制台的结果如下:
Gradle 自动构建工具的使用(一)之groovy的学习_第1张图片

(3)括号是可选的

println(version) 和 println version 是一样的

(4)字符串

def s1='yhr' //仅仅是字符串
def s2= "yhr" //可以插入变量  s2="xxxx is ${version}"
def s3= '''my name is yhr'''  //可以换行

(5)集合API

//List
def buildTools=['ant','maven']
buildTools << 'gradle'
assert buildTools.getClass()==ArrayList
assert buildTools.size==3
//map
def buildYears=['ant':2000,'maven':2004]
buildYears.gradle=2009

println buildYears.ant
println buildYears['gradle']
println buildYears.getClass() //打印出来为 class java.util.LinkedHashMap

打印结果:

Gradle 自动构建工具的使用(一)之groovy的学习_第2张图片

可以看到 groovy的map本质上就是linkedHashMap

(6)闭包

def c1={
    v ->
        print v

}

def c2={
    print 'hello'
}

def method1(Closure closure){ //不能去导包 因为会导到java的包
    closure('param')
}

def method2(Closure closure){
    closure()
}

method1(c1);
method2(c2);

得到结果:
在这里插入图片描述
这里param hello 打印到一起了
这里groovy的闭包定义与其他语言定义好像略有不同,放在这里,以后再来深究

你可能感兴趣的:(学习笔记)