您当前的位置: 首页 >  gradle

xiangzhihong8

暂无认证

  • 0浏览

    0关注

    1324博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Gradle详解

xiangzhihong8 发布时间:2017-06-30 18:06:33 ,浏览量:0

Gradle简介

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官网。

Groovy

Groovy语法介绍 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             
关注
打赏
1482932726
查看更多评论
0.0501s