Gradle:需要帮助才能理解

时间:2016-11-18 11:23:31

标签: gradle task

拥有build.gradle

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

task count {
    println "one"
    doLast{
        4.times {print "$it "}
    }
    println "two"
    doFirst{
        2.times {println "$it - 1 "}
    }
    3.times {println( "$it -3")}
}

task intro(dependsOn: hello){
    doLast{
        println("I'm Gradle!")
    }
}

在shell中运行

gradle intro

并获取

one
two
0 -3
1 -3
2 -3
:hello
Hello World!
:intro
I'm Gradle!

BUILD SUCCESSFUL

但它不正确! 正确的输出是

:hello
Hello World!
:intro
I'm Gradle!

BUILD SUCCESSFUL

我做错了什么?

PS 添加细节,因为这里有太多的代码:( 添加细节,因为这里有太多的代码:( 添加细节,因为这里有太多的代码:( 添加细节因为这里有太多代码:(

1 个答案:

答案 0 :(得分:2)

为什么你认为这是错的?可能它绝对正确。这完全归功于构建的配置。请在official user guide

中了解相关信息

构建期间会发生多个阶段。其中之一是配置阶段。您不希望看到的所有输出 - 是配置的输出。当你在任务的闭包中执行某些操作时,它会在构建的配置中执行,直到你将它放入doLastdoFirst闭包中以在执行阶段运行(或者使用{{声明任务的闭包) 1}}与<<相同。

请注意,无论是否执行任务,都会对所有任务执行配置。这就是您意外输出的原因 - 它只是作为构建配置的一部分完成的,尽管它们是在某个任务中声明的。