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方法