Gradle基础篇

1.Gradle是什么:

一个开源的项目自动化构建工具,建立在Apache Ant和Apache Maven概念的基础上,并引入了基于Groovy的特定领域语言(DSL),而不再使用XML形式管理构建脚本。

2.Gradle的安装:

因为gradle是基于JVM的,所以在安装gradle之前需要确保本级已经安装了JDK,可以通过java -version来验证是否已经在安装了JDK。

在gradle官网(https://gradle.org)下载gradle压缩包后进行环境配置:

在Windows上的配置:

1.解压的指定目录配置到环境变量GRADLE_HOME

2.然后将bin目录添加到path:%GRADLE_HOME\bin;

3.最后通过gradle -v验证gradle是否安装成功

在Mac上的配置:

1.输入open -e .bash_profile打开.bash_profile

2.配置GRADLE_HOME和PATH,

例如export GRADE_HOME=....../gradle-4.1和export PATH=$PATH:$GRADLE_HOME/bin

3.输入source ~/ .bash_profile更新文件

4.可以通过gradle -version验证是否配置成功

3.Groovy是什么:

Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。

与Java比较:

1.Groovy完全兼容Java的语法(因为它们都是基于JVM的,Groovy最后也是编译成Java字节码的)

2.代码行分号是可选的

3.类、方法默认是public的

4.Groovy编译器自动给属性添加getter/setter方法

5.属性可以通过点号来获取

6.方法里最后一个表达式的值会被作为返回值

7.在Groovy里面==等同于.equals()方法,不会有NullPointerExceptions异常

测试:

public class ProjectVersion{
    private int major;
    private int minor;

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

    public int getMajor(){
//        return major;
        major
    }

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

//    public int getMinor(){
//        return minor;
//    }
//
//    public void setMinor(int minor){
//        this.minor = minor;
//    }
}
ProjectVersion projectVersion = new ProjectVersion(1,2);
println projectVersion.minor;

ProjectVersion projectVersion1 = null
println projectVersion1 == projectVersion
2
false

Groovy的高效特性:

1.assert语句断言

2.可选类型定义(弱类型语言)

3.可选的括号

4.字符串的表达有三种(单引号,双引号,三个单引号)

5.集合API(List和Map有更简单的写法)

6.闭包

测试:

def version = 1

//2 assert
//assert version == 2

//3 括号是可选的
println version

//4 字符串
def s1 = 'cmt1'
def s2 = "cmt2 version is ${version}"
def s3 = '''c
            m
            t
            3'''
println s1
println s2
println s3

//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()

//6 闭包
def c1 = {
    v -> println v
}
def c2 = {
    println 'hello'
}
def method1(Closure closure){
    closure('param')
}
def method2(Closure closure){
    closure()
}
method1(c1);
method2(c2);
1
cmt1
cmt2 version is 1
c
            m
            t
            3
2000
2009
class java.util.LinkedHashMap
param
hello

每个gradle的构建脚本都有一个project实例,就是一个项目实例。

解析实例:

apply plugin: 'java'

version = 0.1

repositories{
    mavenCentral()
}

dependencies{
    compile 'commons-codec:commons-codec:1.6'
}

apply是project的一个方法,这里省去了(),apply plugin: 'java'其实是导入了一个插件可以通过gradle直接构建jar包,如下:通过导入两个插件后可以通过gradle以两种形似构建不同的包

version是project的一个属性

repositories也是一个方法,{mavenCentral()}是一个闭包作为参数调用这个repositories方法

同样的dependencies也是一个方法,{compile 'commons-codec:commons-codec:1.6'}也是一个闭包作为参数调用前面的dependencies方法