Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具,gradle跟ant、maven一样,是一种依赖管理、自动化构建工具。但跟ant、maven不一样的是,它并没有使用xml语言,而是采用了Groovy语言,这使得它更加简洁、灵活,更加强大的是,gradle完全兼容maven和ivy。详细介绍可以查看官网的介绍:http://www.gradle.org/
Gradle入门在学习Gradle之前,先看一下Groovy的介绍。
Groovy安装Groovy环境配置非常简单,根据Groovy官网 的介绍,安装的时候使用如下的命令即可安装Groovy。
curl -s get.gvmtool.net | bash
source "$HOME/.gvm/bin/gvm-init.sh"
gvm install groovy
然后我们新建一个以xxx.groovy结尾的文件,然后在里面添加如下代码:
println "hello groovy"
然后使用如下的命令运行即可。
groovy xxx.groovy
groovy除了支持jdk之外,groovy还提供GDK,相关API请查看GDK官网。
GroovyGroovy语法介绍 1,Groovy为了尽量减少代码的输入,可以不使用分号结尾。 2,Groovy支持动态类型,即定义变量的时候可以不指定其类型,为了代码的清晰,变量定义常常使用关键字def。例如:
def variable1 = 1 //可以不使用分号结尾
def varable2 = "I am a person"
def int x = 1 //变量定义时,也可以直接指定类型
3,添加函数时,参数的类型也可以不指定。例如:
String testFunction(arg1,arg2){
...
}
4,Groovy对字符串支持相当强大,充分吸收了一些脚本语言的优点。单引号”中的内容严格对应Java中的String,不对$符号进行转义。例如:
def singleQuote='I am $ dolloar' //输出就是I am $ dolloar
对于双引号”“的内容,如果字符中有 号的话,则它会 号的话,则它会 表达式 先求值。例如:
def doubleQuoteWithoutDollar = "I am one dollar" //输出 I am one dollar
def x = 1
def doubleQuoteWithDollar = "I am $x dolloar" //输出I am 1 dolloar
5,Groovy中函数调用可以不加括号。例如:
Groovy中函数调用的时候还可以不加括号
Groovy数据类型
基本数据类型
作为面向对象的动态语言,Groovy有诸多面向对象的特性。不过和Java等面向对象的语言不通的是,Java使用基本数据类型,而Groovy则使用基本数据类型的包装数据类型。
容器Groovy支持的容器类型主要有三类:List、Map、Range。
- List:链表,其底层对应Java中的List接口,一般用ArrayList作为真正的实现类。
- Map:键-值表,其底层对应Java中的LinkedHashMap。
- Range:范围,它其实是List的一种拓展。
List
def aList = [5,'string',true] //定义一个List,其元素可以是任何对象。如果索引超过当前链表长度,List会自动扩展数组的大小。 数据索引从0开始。
assert aList[1] == 'string'
assert aList[5] == null //第6个元素为空
aList[100] = 100 //设置第101个元素的值为100
assert aList[100] == 100
//此时,aList的大小为101
println aList.size ===>101
Range Range是Groovy对List的一种拓展。例如:
def aRangeWithoutEnd = 1..
println"this is code"
}
闭包定义好后,要调用它的方法就是:闭包对象.Call或者闭包对象(参数)。例如:
aClosure.call("this is string",100)或者
aClosure("this is string", 100)
注:如果闭包没定义参数的话,则隐含有一个参数,这个参数名字叫it,和this的作用类似。例如:
def greeting = { it -> "Hello, $it!" }
assert greeting('Patrick') == 'Hello, Patrick!'
闭包注意点
闭包在Groovy中大量使用,比如很多类都定义了一些函数,这些都是闭包。
public static List each(List self, Closure closure)
1,在Groovy中,当函数的最后一个参数是闭包的话,可以省略圆括号。例如:
def testClosure(int a1,String b1, Closure closure){
//do something
closure() //调用闭包
}
那么调用的时候,就可以免括号!
testClosure (4, "test", {
println "i am in closure"
} )
上面的代码在调用的时候就可以省略()。
脚本Groovy中可以像Java那样写package,然后写类。比如在文件夹com/cmbc/groovy/目录中放一个文件,叫Test.groovy。如果不声明访问权限的话,Groovy中类及其变量默认都是public的。Groovy可以把自己转换成Java类。例如,将test.groovy转换为Java类的代码为:
groovyc -d classes test.groovy
Gradle
gradle跟maven一样,也有一个配置文件,maven里面是叫pom.xml,而在gradle中是叫build.gradle,相信Android开发人员对这个都比较了解。Android Studio中的android项目通常至少包含两个build.gradle文件,一个是project范围的,另一个是module范围的,由于一个project可以有多个module,所以每个module下都会对应一个build.gradle。 Gradle只是提供了构建项目的一个框架,真正起作用的是Plugin。Gradle在默认情况下为我们提供了许多常用的Plugin,其中包括有构建Java项目的Plugin,还有War,Ear等。
现在我们都在谈领域驱动设计,Gradle本身的领域对象主要有Project和Task。Project为Task提供了执行上下文,所有的Plugin要么向Project中添加用于配置的Property,要么向Project中添加不同的Task。一个Task表示一个逻辑上较为独立的执行过程,比如编译Java源代码,拷贝文件,打包Jar文件,甚至可以是执行一个系统命令或者调用Ant。另外,一个Task可以读取和设置Project的Property以完成特定的操作。让我们来看一个最简单的Task,例如:
task helloWorld
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?