参考文章:

Gradle学习系列之二——创建Task的多种方法(http://www.cnblogs.com/CloudTeng/p/3417970.html)

Gradle基本知识点与常用配置(https://segmentfault.com/a/1190000006915937)

Gradle 中的语法

目录

  1. 创建task
  2. 自定义task
  3. project
  4. closure and action

1.创建task

cmd:  gradle -q [taskname]

-q 表示不打印输出日志信息。即仅显示结果。

task有两个生命周期,配置阶段和执行阶段。

1. <<     (追加)  *  在gradle5.0后会被去掉,建议使用doLast代替。

  即向任务名追加执行过程。

task hello << {
println 'hello, this world'
}

2. doLast(执行时加载)和doFirst(配置时加载)

task hello{
doLast{
println "I'm this last"
}
doFirst{
println "I'm this first"
}
}

3. tasks

所有的task都存在一个TaskContainer容器中,是Project的属性。可创建task来查看

task showTask{
println tasks.class
println tasks.size()
} ------------------------------------------------
class org.gradle.api.internal.tasks.DefaultTaskContainer_Decorated
3

4. create

可通过TaskContainer的创建方法来构造task

tasks.create(name:'createTask') {
println "i create my task..."
}

5.dependsOn

task之间的依赖

tasks.create(name:'createTask',dependsOn:'hello') {
println "i create my task..."
}

或

[taskname].dependsOn [taskname]

6.task的属性(Properties)定义

  每个task有两个默认的属性 description和 logger,

  特定Task会有额外的一些属性(例:Copy有from和to属性)。

  使用ext自定义properties

task hello{
doLast{
println hell
println hell2
}
}
hello {
ext.hell = "Hell........"
ext.hell2 = "Hell2...."
description = "description is default's Properties"
}

2.自定义task:

  @Optional:表示定义项可选

  @TaskAction 表示task要执行的过程

class MyDefineTask extends DefaultTask{

	@Optional
String message; @TaskAction
def hello(){
println "my defined message: $message "
}
} task helloMy(type: MyDefineTask){
message = "hello world.."
} task DefineHello(type: MyDefineTask){
message = " my defined...."
}

3. Project:

Gradle在默认情况下已经为Project定义了很多Property,其中比较常用的有:

  • project:Project本身
  • name:Project的名字
  • path:Project的绝对路径
  • description:Project的描述信息
  • buildDir:Project构建结果存放目录
  • version:Project的版本号

1. 自定义Properties(使用ext):

ext{
pro1="I'm defined pro1"
} 或 ext.pro2 = "I'm defined pro2" println pro2

4. Closure And Action

Closure(闭包)是一段单独的代码块,它可以接收参数,返回值,也可以被赋值给变量。即将一段代码段赋值给一个变量,

可以在调用的地方被使用。<< (Closure) 在gradle5.0已经不被使用,Action代替。

Closure cl = { task -> println "I'm $task.project.name"}
task hello2 << cl
project(':MavenCore') {
task hello2 << cl
}
project(':MavenView') {
task hello2 << cl
}

Closure cl = {task -> println "I'm $task.project.name"}
task hello2{doLast cl}

Action指一段代码段 ,一个Task由多个Action组成。

Gradle 语法的更多相关文章

  1. Gradle学习系列之三——读懂Gradle语法

    在本系列的上篇文章中,我们讲到了创建Task的多种方法,在本篇文章中,我们将学习如何读懂Gradle. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...

  2. Gradle学习系列之读懂Gradle语法

    转载地址: http://www.cnblogs.com/CloudTeng/p/3418072.html Gradle是一种声明式的构建工具.在执行时,Gradle并不会一开始便顺序执行build. ...

  3. Gradle语法基础解析

    在从ADT转移到AndroidStudio下开发,必然会遇到Gradle脚本打包的问题.看懂一个脚本最基本的前提就是了解它的语法,我在转移开发环境的过程中,也开始接触学习Gradle,在此做了一些总结 ...

  4. Gradle学习系列之一——Gradle快速入门

    这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...

  5. Android Studio系列教程四--Gradle基础

    Android Studio系列教程四--Gradle基础 2014 年 12 月 18 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzhang ...

  6. Gradle学习

    Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言.近期,Gradle获得了极大的关注,这也是我决定去研究Gradle的原因. 这篇文章是 ...

  7. android开发系列之gradle认识

    后面的系列博客,我将会写一写自己这段时间对于android的学习.认识.体会,希望能够与大家分享. 相信大家从ADT开发切换到android studio最大.最直观的变化就是gradle,因为在an ...

  8. Gradle学习系列(一)

    今天就开始学习Gradle构建了,听说很牛X.本篇内容就带领我初步窥探Gradle的世界.     1.什么是Gradle       相信之前都接触过用Ant或者Meavn进行项目的构建,两者各有千 ...

  9. 使用gradle构建java项目

    gradle是什么东东 gradle是继ant,maven之后另外一种的面向java的自动化项目构建工具,他是基于groovy语言的.相对于ant,maven,gradle显得更加简单. 安装grad ...

随机推荐

  1. 如何安装Genymotion模拟器

    我们在进行App测试的时候,除了使用真机进行测试,有时候还需要借助模拟器来进行测试,那么Android SDK本身给我们提供了一个原生态的模拟器,但是由于启动太慢,性能太差,逐渐被大家放弃了,那么还有 ...

  2. 【转】每天一个linux命令(61):wget命令

    原文网址:http://www.cnblogs.com/peida/archive/2013/03/18/2965369.html Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于 ...

  3. oracle12c之 控制pdb中sga 与 pga 内存使用

    Memory Management using Resource Manager Oracle数据库资源管理器(资源管理器)现在可以在多租户容器数据库(CDB)中管理可插入数据库(PDBs)之间的内存 ...

  4. POJ2228 Naptime

    题目:http://poj.org/problem?id=2228 环形dp.开一维记录当前最后一份时间是否在睡.很精妙地分两类. 1.正常从1到n线性dp. 2.上边只有一种情况未覆盖:第一份时间就 ...

  5. 解决“Replace wireless configuration ”默认被选上的问题

    方法一 1.打开 /home/tingpan/openwrt/barrier_breaker/feeds/luci/modules/admin-full/luasrc/model/cbi/admin_ ...

  6. PHP解析xml文件时报错:I/O warning : failed to load external entity

    在代码顶部增加 libxml_disable_entity_loader(false); libxml_disable_entity_loader()作用是设置是否禁止从外部加载XML实体,设为tru ...

  7. linux raid10管理维护

    http://www.linuxidc.com/Linux/2015-10/124391.htm    制作raid10 http://www.linuxidc.com/Linux/2015-09/1 ...

  8. android 获取当前 activity

    ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE); List<RunningTask ...

  9. wxWidgets:消息处理流程

    首先解释下EventHandler. wxWidgets中EventHandler并不是简单的指消息(事件)处理函数,而是一个用于处理窗口系统消息的类.收到消息后,wxEventHandler会调用e ...

  10. Heritrix3.x自定义扩展Extractor

    一.引言: Heritrix3.x与Heritrix1.x版本差异比较大,全新配置模式的引入+扩展接口的变化,同时由于说明文档的匮乏,给Heritrix的开发者带来困惑,前面的文章已经就Heritri ...