其他分享
首页 > 其他分享> > task详解(五)

task详解(五)

作者:互联网

目录


//最简单的定义方式,定义一个名字为hello的task,并为这个task传入了一个闭包作为参数。
task hello {
  print 'hello world'
}
//我们还可以定义的时候,为Task指定他的类型,分组等一系列配置。这样我们的Task就继成于了Copy这个已经存在的Task,并且分在了Test这个组中。
task hello(type: Copy, group: 'Test') {
  print 'hello world'
}
//当然我们还可以将分组等属性的定义放在闭包体中去。如下:
task hello(type: Copy) {
     group 'Test'
     from 'src/main/doc'
     into 'build/target/doc'
 }
//其实就是调用了Task类内部的setGroup()方法,以及从Copy类继成下来的from方法和into方法。

首先task有两个定义的方法,doLast和doFirst。

task hello {
  doLast{
    print "数据已成功存入文件." 
  }
  doFirst{
    print "记录已正确生成."
  }
  print '文件拷贝完成.'
}

这个task执行以后,这三条语句的输出会是什么样子的呢?答案是这样的:

文件拷贝完成.
记录已正确生成.
数据已成功存入文件

Task 分成2个不同的生命周期,配置期和执行期。

配置期的代码总是先于执行期执行的,由于两句代码都是在doLast,doFirst的执行期方法,所以总是后于最后一句的输出。而doFirst总是先于doLast执行。

如果我们希望task按照我们的希望的执行顺序,该怎么做呢?

task taskA{
   print 'i am is task A'
}

task taskB{
   print 'i am is task B'
}

taskB.dependsOn taskA

//通过让taskB依赖于taskA,这样taskB在执行的时候就一定会先执行taskA

但是有个问题,如果我只想执行B而不执行A呢,咋办?方法就是使用 mustRunAfter 关键字

taskB.dependsOn taskA

gradle生命周期分三个阶段:

println '=====在配置阶段执行===='

task configured {
    println '=====也在配置阶段执行====='
}

task test << {
    println '======运行阶段执行====='
}

task testBoth {
    doFirst {
      println '======在task运行之前执行======'
    }
    doLast {
      println '======在task运行之后执行======'
    }
    println '======在配置阶段执行======'
}

标签:Task,taskA,task,print,执行,hello,详解
来源: https://blog.csdn.net/qq_33394088/article/details/100066570