Gradle 笔记(一)

gradle

缘由

在Android的开发中,总遇到需要和Gradle脚本打交道的时候,一开始我觉得这个没啥用没有在意,但是每次打包都需要大半个小时,实在难受,遂决定研究学习下Gradle,这篇文章实我学习中的笔记,供日后参考。

Groovy

Gradle使用Groovy作为开发语音,而Groovy完全兼容Java语法。 需要注意的点:

字符串

  • ''单引号 表示一段不可变的字符串,不可以执行字符串内的表达式计算
  • ""双引号 表示一段可变的字符串,可以使用字符串内的表达式计算,例如"${rootProject}"

Map

在Groovy里面,Map表示的是一个K-V列表,本质是LinkedHashMap,使用方式如下:

def map = ['width':1024,'height':1820]
//下面两种方式都可以取值
println map['width']
println map.height

方法

在Groovy中,执行一个方法可以不加括号(),例如方法sum(int a,int b),调用的时候可以写成sum 1,2结果与sum(1,2)一样

get/set

Java Bean
的设计里面,通过get来获取属性值,在Groovy里面不需要写这些方法,直接通过.就可以读取和设置属性的值。例如我们经常使用的获取项目编译目录文件夹rootProject.buildDir,他的本质也是rootProject.getBuildDir()
对于set设置属性,在groovy里面只需要添加``面就可以跟新的值,例如description '这是描述',等同于setDescription('这是描述')

Gradle

asdasd

断言onlyIf

onlyIf可以用来控制一个Task是否执行,当返回值为true时表示执行,否则表示不执行。这个效果同enabled属性一样可以控制是否执行,但是onlyIf接收的是一个闭包{}可以在里面添加代码进行判断。例如

taskTest.onlyIf {
    false
}

编译参数

在执行gradlew命令的时候,可以添加一些参数来改变编译环境,例如我们在打包APK的时候,可以设计一个字段buildMarket来表示打包的具体应用市场渠道,在编译的时候通过-PK=V的形式这只属性值,其中K V表示的是key和value。

创建任务

  • 使用任务名+闭包的形式:

    task name{

    doLast{
        doSomething....
    }
    

    }

  • 任务名的形式

    def Task name = task(name)
    name.doLast{

    doSomething.....
    

    }

查找任务

可以通过tasks找到定义好的任务,例如tasks.findByName(name)或者tasks.findByPath(path)等。

Search by:GoogleBingBaidu