zoukankan      html  css  js  c++  java
  • gradle学习笔记(1)

    1. 安装

        (1) 下载最新gradle压缩包,解压到某处。地址是:Gradle web site

        (2) 添加环境变量:

                1) 变量名:GRADLE_HOME变量值:刚才解压的地址,如:E:gradle-2.8。

                2) 为Path变量添加一个值:GRADLE_HOME/bin

                3) 测试。在命令行里输入gradle -v,若显示一些gradle信息,说明安装成功。

    2. Hello World

    (1) 基本概率

        gradle中的一切都基于两个概念:projecttask

        每次gradle build都是组装一个或多个projectproject可能是一个library JAR,也可能是一个web应用,它还能是一个配置(不一定能被Build);

        每一个project由一个或多个task组成

    (2) 基本操作

    例1

    build.gradle

    task hello {
        doLast {
            println 'Hello world!'
        }
    }

        现在你能在命令行中进入该文件所在目录,然后输入命令gradle -q hello 去执行hello任务,你将会在命令行中看到Hello World!

        它的执行过程是当你执行gradle命令时,gradle会在当前目录下寻找build.gradle文件。

        build.gradle也被称为build script。另外,命令中-q的意思是不要输出gradle的一些日志信息。

        还有一种更简便的task的写法:

    task hello << {
        println 'Hello world!'
    }
    (3) 使用Groovy语句

       

        在build脚本中还可以使用Groovy语句。

    例2

    task upper << {
        String someString = 'mY_nAmE'
        println "Original: " + someString 
        println "Upper case: " + someString.toUpperCase()
    }

    同样,执行命令gradle -q upper,将输出:Original:hElLo wOrLd !(换行)Upper case:HELLO WORLD !

    例3

    task count << {
        4.times { print "$it " }
    }

    输出:0 1 2 3。注意:$it 是被双引号包含。

    (4) 任务的依赖(Task dependencies)
    task hello << {
        print 'Hello world,'
    }
    
    task intro(dependsOn: hello) << {
        print "I'm Gradle!"
    }

        输出:Hello world,I'm Gradle!

        另外,若想实现Lazy dependsOn(懒依赖),即把依赖任务写到被依赖任务的前面,例如上面想要将intro任务写到hello任务的前面,需要将intro任务中的dependsOn: hello中的hello打上单引号,否则会报Could not find property 'hello' on root project 'test'.错误,即:

    task intro(dependsOn: 'hello') << {
        println "I'm Gradle!"
    }
    
    task hello << {
        print 'Hello world,'
    }
    (5) 动态任务(Dynamic tasks)

    例4

    4.times { counter ->
        task "task$counter" << {
            println "I'm task number $counter"
        }
    }
    task0.dependsOn task2, task3

    执行命令gradle -q task0,输出:

    I'm task number 2
    I'm task number 3
    I'm task number 0

    为一个存在的任务添加行为,如下:

    例5

    task hello << {
        println 'Hello Earth'
    }
    hello.doFirst {
        println 'Hello Venus'
    }
    hello.doLast {
        println 'Hello Mars'
    }
    hello << {
        println 'Hello Jupiter'
    }

    输出:

    Hello Venus
    Hello Earth
    Hello Mars
    Hello Jupiter
    (6) 额外的任务参数(Extra task properties)

    例6

    task myTask {
        ext.myProperty = "myValue"
    }
    
    task printTaskProperties << {
        println myTask.myProperty
    }

    输出:myValue

    (7) 使用 Ant 任务

    例7

    task loadfile << {
        def files = file('你要遍历的路径,可以是相对路径,也可以是绝对路径(注意路径中的斜杠,要么写一个正斜杠,要么写两个反斜杠)').listFiles().sort()
        files.each { File file ->
            if (file.isFile()) {
                ant.loadfile(srcFile: file, property: file.name)
                println " *** $file.name ***"
                println "${ant.properties[file.name]}"
            }
        }
    }

    为了增强代码的灵活性与重用性,可以将一些代码抽取成一个方法,如:

    (8) 默认任务

    例8

    defaultTasks 'clean', 'run'
    
    task clean << {
        println 'Default Cleaning!'
    }
    
    task run << {
        println 'Default Running!'
    }
    
    task other << {
        println "I'm not a default task!"
    }

    输出:

    Default Cleaning!
    Default Running!
    (9) Configure by DAG

    例9

    task distribution << {
        println "We build the zip with version=$version"
    }
    
    task release(dependsOn: 'distribution') << {
        println 'We release now'
    }
    
    gradle.taskGraph.whenReady {taskGraph ->
        if (taskGraph.hasTask(release)) {
            version = '1.0'
        } else {
            version = '1.0-SNAPSHOT'
        }
    }

    执行gradle -q distribution 输出:We build the zip with version=1.0-SNAPSHOT

    执行gradle -q release 输出:

    We build the zip with version=1.0
    We release now
  • 相关阅读:
    归并排序
    汉诺塔系列问题: 汉诺塔II、汉诺塔III、汉诺塔IV、汉诺塔V、汉诺塔VI、汉诺塔VII
    Uncle Tom's Inherited Land
    汉诺塔III
    汉诺塔X
    Frosh Week
    hdu 1007最近点对问题
    POJ1579:Function Run Fun
    Hdu1163 Eddy's digitai Roots(九余数定理)
    放苹果问题
  • 原文地址:https://www.cnblogs.com/dongkuo/p/4971901.html
Copyright © 2011-2022 走看看