gradle 未调用初始化脚本任务:Gradle 2.14.1

gradle init script task not invoked : Gradle 2.14.1

请在下面找到 init.gradle 文件,该文件对我的所有项目都有共同的任务:-

rootProject { apply plugin: "eclipse" }

gradle.allprojects{
    ext.commonTaskForEveryBuild = {
        println "Common task for every build starts here..."
        println "Common task for every build ends here..."
    }
}

还可以在下面找到我的项目之一的示例 build.gradle :-

apply plugin : 'java'

clean.doFirst{
    println "Before invoking commonTaskForEveryBuild"  

    //This is invocation of commonTaskForEveryBuild
    commonTaskForEveryBuild

    println "After invoking commonTaskForEveryBuild"
}

下面是为示例 build.gradle 文件执行“gradle clean”任务的日志:-

:clean

Before invoking commonTaskForEveryBuild

After invoking commonTaskForEveryBuild

:clean UP-TO-DATE

BUILD SUCCESSFUL

Total time: 3.722 secs

看起来 clean.doFirst 被调用了,但它没有调用 commonTaskForEveryBuild 的定义。虽然,没有编译时或运行时错误。 请提出建议。

没关系,你的任务没有被调用,因为你的脚本不会尝试执行它,它甚至不是任务。您刚刚获得了 commonTaskForEveryBuild 实例,但没有对其进行任何操作。

您可能需要阅读 the official user guide 以了解如何从另一个任务调用一个任务。简而言之——这通常是通过任务依赖来完成的。在 clean 任务执行之前,您必须根据 commonTaskForEveryBuild 任务将 clean 任务变为 运行 它。可以这样做:

clean.dependsOn commonTaskForEveryBuild

此外,这都是关于任务的,但在你的情况下 ext.commonTaskForEveryBuild = {...} 甚至不是任务,而只是一个闭包,它必须作为 commonTaskForEveryBuild()

执行