• Gradle 语法


    参考文章:

    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组成。

  • 相关阅读:
    调试
    node笔记汇总
    移动端布局
    css 易错点总结
    Angular笔记
    CANVAS笔记
    http笔记汇总
    各种环境搭建 软件安装等等 参考网址收录
    js中同步异步,任务队列
    node.js之fs模块
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/7736582.html
Copyright © 2020-2023  润新知