初学还是用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
使用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
目录下新建一个文件,随便写点什么,然后执行
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)
}
}