Skip to content

Instantly share code, notes, and snippets.

@zhanggang807
Last active November 11, 2018 08:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zhanggang807/8145bbe4b4e651083c5e58dfb10aa30f to your computer and use it in GitHub Desktop.
Save zhanggang807/8145bbe4b4e651083c5e58dfb10aa30f to your computer and use it in GitHub Desktop.
gradel概述task任务入门学习笔记
//使用 gradle task [-q] [--quiet]来执行任务
task HelloWorld {
doFirst {
println 'task at do first point---one'
}
doFirst {
println 'task at do first point---two'
}
//可以添加多个
doLast {
println 'hello world! at do last point - point---one'
}
doLast {
println 'hello world! at do last point - point---two'
}
doFirst {
println 'task at do first point---three'
}
//总结 doFirst 早于 doLast,但是doFirst或doLast其中的任务没有顺序
}
// << 这种闭关的方式已过时,5.0以后会移除掉
// task HelloWorld << {
// println 'Hello World!'
// // << 与上面doLast代码等效
// }
task startSession {
doLast {
chant()
}
}
//声明方法 ,用-q --quiet参数时为什么不会输出ant.echo呢?
def chant() {
ant.echo(message : 'Repeat After Me...')
}
3.times {
task "yayGradle$it" { //$it -> 0,1,2 一次性声明三个任务,任务名称为'xxxx$it',使用'xxxx$it’来运行
doLast {
println 'Gradle rocks'
}
}
}
yayGradle0.dependsOn startSession //定义任务依赖
yayGradle2.dependsOn yayGradle1, yayGradle0 //有多个依赖
task groupTherapy (dependsOn : yayGradle2)
//运行 gradle groupTherapy 查看结果
//列出项目中所有的task,运行 gradle tasks
// 这样的好像 除gradle内建 的任务不打印,加上参数--all 就会把所有的打印出来 这里面还有任务组的概念,比如help任务组下就有很多任务
// 旧版本会以缩进的方式来显示任务间的依赖关系,新版本要怎么弄呢??//TODO
// task依赖的执行顺序
// 理解Gradle并不能保证task依赖的执行顺序足很重要的。dependsOn方法只
// 是定义了所依赖的task需要先执行。Gradle的思想是声明在一个给定的task执行之
// 前什么该被执行,而没有定义它该如何执行。如果你之前使用过像Ant这种命令式
// 地定义依赖的构建工具的话,那么Gradle的这个概念就有点难以理解了。在本章的
// 后续部分你将看到,在Gradle中,执行顺序是由task的输入/输出规范自动确定的。
// 这种构建设计有很多好处。一方面,你只需耍知道整个task依赖链上的关系是否发
// 生改变,这样可以提高代码的可维护性和避免潜在的破坏。另一方面,因为构建没
// 有严格的执行顺序,也就是支持task的并行执行,这样可以极大地节约构建执行时间
// # gradle yayGradle0 groupTherapy 决定任务执行顺序,但是yayGradle0 只执行一次 不管是不是依赖
// feature 支持任务名称驼峰缩写 gralde yayGradle0 与 gradel yG0 等效,但 缩写 必须 唯一才行
// feature 任务排除 gradle groupTherapy -x yayGradle0, yayGradle0 和它依赖的任务将排除不执行
version = '1.2'
task printVersion (group: 'versions', description: 'print version of project'){//使用构造器来设置task的属性
//使用 gradle 内建的基于slf4j的日志
logger.quiet "version $version"
//或者使用 setter方法
group = 'versions'
description = 'print project version' //可以使用gradle tasks --all 来看看task的描述信息
}
//终结器task示例
task first{
println 'first'
}
task second {
println 'second'
}
first.finalizedBy second //终结器task ,清理资源,自动执行
//添加任意代码,通用groovy代码来实现功能 类POJO的POGO,自动生成getter setter
version = new VersionClass(1, 2)//总是调用toString来获取version的值
class VersionClass {
Integer major
Integer minor
Boolean release
VersionClass(Integer major, Integer minor){
this.major = major
this.minor = minor
this.release = Boolean.FALSE
}
VersionClass(Integer major, Integer minor, Boolean release){
this(major, minor)
this.release = release
}
@Override
String toString(){
"$major.$minor${release ? '' : '-SNAPSHOT'}"
}
}
//执行这个任务为什么连上面的任务都执行了???输出头是> Configure project : ,而别的都是输出 > Task :HelloWorld
task versionFromClass {
println version
}
//task配置块早于task任务执行,task配置块中可能有输出语句,所以你才会看到
// gradle 构建的生命周期 初始化、配置、执行
// 项目的每一次构建的配置代码都会被执行,即使你只执行了gradle tasks
//一个task是否执行,要看它的inputs and outputs
task makeReleaseVersion (group: 'versions', description: 'make Project a release version'){
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment