gradle的使用1

DSL(Domain Specific Language)领域特定语言,就是专门为一个领域定制的语言。Gradle就是一门DSL,他是基于Groovy的。

1.window上安装gradle,下载gradle,解压后将bin目录配置到path路径中。
2.创建build.gradle文件。

task hello{
   doLast{
    println "hello"
    logger.quiet("rizhi")
    logger.error("error")
    logger.info("info")
    logger.debug("debug")
   }
}

执行命令gradle -q hello 

doLast表示在task执行完后开始执行这部分闭包代码。

3.wrapper表示对Gradle的包裹,目的是使开发过程中统一使用Gradle构建的版本,避免版本不统一。
gradle wrapper就能生成可执行的脚本

可以用以下命令指定gradle的版本

gradle wrapper --gradle-version 5.2.1

4.gradle的日志有6级

ERROR
QUIET  重要消息  -q
WARNING
LIFECYCLE 进度消息
INFO    -i
DEBUG   -d

使用

gradle -s  表示输出关键堆栈信息
gradle -S  表示输出全部堆栈信息

可以自定义的日志信息

logger.quiet("quiet")

5.获取帮助

gradlew -?
或gradlew -h
或gradlew -help

使用gradlew tasks获取所有的task

gradlew tasks --all

强制刷新gradle的依赖,assemble是集合的意思。

gradlew --refresh-dependences assemble

6.字符串

task printStringvar{
    def name ="涨"
    println '单引号:${name}'
    println "双引号:${name}"  //双引号支持模板字符串,但是单引号不支持
}

7.List的使用

task printList{
    def numList=[1,2,4,5]

	println numList.getClass().name  //ArrayList

  println numList[-1]  //最后一个元素
  println numList[1] //第一个元素
  println numList[1..3]  //从第二个到第四个元素

  //遍历
    numList.each{
     println it
    }
}

8.Map的使用

task printMap{
 def map=["width":1024,"height":768]
 println map.getClass().name   //LinkedHashMap
 println map["width"]   //两种获取值的方式
 println map.height

 map.each{
    println "key:${it.key},value:${it.value}"
  }
}

9.方法

task invokeMethod{
  method(1,2)
   method 1,2   //能省略括号

    println "${method1(1,3)}"
  println "${method2(1,3)}"  
}

def method(int a ,int b){
    println a+b
}

def method1(int a ,int b){
    return a+b
}

def method2(int a ,int b){
    a+b  //可以省略return ,这样默认返回的是最后一行
}

10.遍历方法的各种写法

println "第一种"
//遍历
numList.each{
    println it
}
println "第二种"
numList.each({
    println it
})
println "第三种"
numList.each(){
    println it
}

11.JavaBean的使用

task helloJavaBean{
   Person p =new Person()
   println "名字:${p.name}"
   p.name="涨"  //可以赋值
    println "名字:${p.name}"

   //只定义了get方法,这样就能直接获取使用
   println "名字:${p.age}"
}


class Person{
	//不需要借助get set方法,默认就实现了这些
   private String name;

    //只定义了age的get方法,但是不能进行修改age
    public int getAge(){
       12
    }
}

12.自定义闭包

task helloClosure{
  customEach{
       println it
   }
}

//自定义闭包,只有一个参数,就是接受代码块

def customEach(closure){
   for(int i in 1..10){
        closure(i)
    }
}

向闭包中传递参数

task helloClosure1{
    //当闭包有一个参数时,默认是it,当有多个参数的时候,就不能用it,需要把参数一一列出
   eachMap{k,v->
       println  "${k} is ${v}"
    }
}

def eachMap(closure){
   def map=["name":"涨","age":12]

  map.each{
      closure(it.key,it.value)
    }
}

13.闭包委托
Groovy的闭包有thisObject,owner,delegate三个属性。当在闭包中调用方法时,由他们确定使用哪个对象来处理。
默认情况下delegate和owner是相等的,但是delegate是可以被改变的。

static def person1(Closure<Person1> closure) {
     Person1 p = new Person1()
	 //可以指定代理,修改delegate。也可以直接用传参的形式,相当于把it传递过去
	 //closure.delegate = p
     //closure.setResolveStrategy(Closure.DELEGATE_FIRST)
     closure(p)

  //闭包委托
  println "closure.thisObject="+closure.thisObject
  println "closure.owner="+closure.owner
  println "closure.delegate="+closure.delegate
  println "closure.resolveStrategy="+closure.resolveStrategy

}

class Person1 {
   String name
   String age
   def dumpPerson() {
       println "name is ${name},age is ${age}"
   }
}

task hello1 {
//这里的it就是指代对象
    person1 {
      it.name = "momo"
	    it.age = "18"
 	   it.dumpPerson()
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值