请在下面找到对我所有项目都有共同任务的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的定义。虽然,没有编译时或运行时错误。 请建议。
答案 0 :(得分:1)
没关系,你的任务没有被调用,因为你的脚本不会尝试这样做而且它甚至都不是一项任务。您只是获取了commonTaskForEveryBuild
实例,但没有对其执行任何操作。
您可能需要阅读the official user guide以了解如何从另一个任务调用一个任务。简而言之 - 这通常通过任务依赖性来完成。您必须根据clean
任务执行commonTaskForEveryBuild
任务,才能在执行clean
任务之前运行它。这可以这样做:
clean.dependsOn commonTaskForEveryBuild
此外,它完全与任务有关,但在你的情况下,ext.commonTaskForEveryBuild = {...}
甚至不是一个任务,而只是一个闭包,它必须以commonTaskForEveryBuild()