未调用gradle init脚本任务:Gradle 2.14.1

时间:2016-07-29 05:09:16

标签: gradle init

请在下面找到对我所有项目都有共同任务的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”任务的日志: -

  

:清洁

     

在调用commonTaskForEveryBuild之前

     

调用后   commonTaskForEveryBuild

     

:清理UP-TO-DATE

     

建立成功

     

总时间:3.722秒

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

1 个答案:

答案 0 :(得分:1)

没关系,你的任务没有被调用,因为你的脚本不会尝试这样做而且它甚至都不是一项任务。您只是获取了commonTaskForEveryBuild实例,但没有对其执行任何操作。

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

clean.dependsOn commonTaskForEveryBuild

此外,它完全与任务有关,但在你的情况下,ext.commonTaskForEveryBuild = {...}甚至不是一个任务,而只是一个闭包,它必须以commonTaskForEveryBuild()

执行