2、Learning the Basics

初学还是用IDEA比较好,新建一个gradle工程,然后回自动生成相关文件,其中就有build.gradle

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

然后在命令行中使用 gradle -q hello 即可执行

E:\project\gradle-study>gradle -q hello
Hello world!

-q 参数的作用是什么?
该文档的示例中很多地方在调用 gradle 命令时都加了 -q 参数。该参数用来控制 gradle 的日志级别,可以保证只输出我们需要的内容。

task依赖,两种方式都行

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

task intro(dependsOn: hello) {
    doLast {
        println "I'm Gradle"
    }
}
task intro1 {
    dependsOn(hello)
    doLast {
        println "I'm Gradle"
    }
}

动态定义task

4.times { counter ->
    task "task$counter" {
        doLast {
            println "I'm task number $counter"
        }
    }
}

执行

E:\project\gradle-study>gradle -q task1
I'm task number 1

其他方式定义task

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

执行

E:\project\gradle-study>gradle -q hello
Hello Venus
Hello Earth
Hello Mars
Hello Jupiter

扩展配置
我们可以给task定义自定义的property

task myTask {
    ext.myProperty = "myValue"
}

task printTaskProperties {
    doLast {
        println(myTask.myProperty)
    }
}

执行

E:\project\gradle-study>gradle -q printTaskProperties
myValue

使用Anttask

task loadfile {
    doLast {
        def files = file('./src/main/resources').listFiles().sort()
        files.each { File file ->
            if (file.isFile()) {
                ant.loadfile(srcFile: file, property: file.name)
                println " *** $file.name ***"
                println "${ant.properties[file.name]}"
            }
        }
    }
}

这里我们需要在resources目录下新建一个文件,随便写点什么,然后执行

E:\project\gradle-study>gradle -q loadfile
 *** ant.properties ***
propertyName=antProperty

可以定义默认task

defaultTasks 'clean', 'run'

task clean {
    doLast {
        println 'Default Cleaning!'
    }
}

task run {
    doLast {
        println 'Default Running!'
    }
}

task other {
    doLast {
        println "I'm not a default task!"
    }
}

执行

> gradle -q
Default Cleaning!
Default Running!

为不同的任务定义不同的版本信息

task distribution {
    doLast {
        println "We build the zip with version=$version"
    }
}

task release {
    dependsOn 'distribution'
    doLast {
        println 'We release now'
    }
}

gradle.taskGraph.whenReady { taskGraph ->
    if (taskGraph.hasTask(":release")) {
        version = '1.0'
    } else {
        version = '1.0-SNAPSHOT'
    }
}

执行

E:\project\gradle-study>gradle -q release
We build the zip with version=1.0
We release now
E:\project\gradle-study>gradle -q distribution
We build the zip with version=1.0-SNAPSHOT

添加外部依赖

import org.apache.commons.codec.binary.Base64

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath group: 'commons-codec', name: 'commons-codec', version: '1.2'
//      classpath 'commons-codec:commons-codec:1.2'
    }
}

task encode {
    doLast {
        def byte[] encodedString = new Base64().encode('hello world\n'.getBytes())
        println new String(encodedString)
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容