初學(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
使用Ant的task
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)
}
}