2、Learning the Basics

初學(xué)還是用IDEA比較好,新建一個gradle工程,然后回自動生成相關(guān)文件,其中就有build.gradle

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

然后在命令行中使用 gradle -q hello 即可執(zhí)行

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

-q 參數(shù)的作用是什么?
該文檔的示例中很多地方在調(diào)用 gradle 命令時都加了 -q 參數(shù)。該參數(shù)用來控制 gradle 的日志級別,可以保證只輸出我們需要的內(nèi)容。

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"
    }
}

動態(tài)定義task

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

執(zhí)行

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'
}

執(zhí)行

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)
    }
}

執(zhí)行

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目錄下新建一個文件,隨便寫點什么,然后執(zhí)行

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!"
    }
}

執(zhí)行

> gradle -q
Default Cleaning!
Default Running!

為不同的任務(wù)定義不同的版本信息

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'
    }
}

執(zhí)行

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)
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容