我正在尝试检查TODO标签的fix a gradle plugin。
此插件添加了一个新任务(checkTodo
),可用于运行检查。此任务未自动运行,但可以通过将此行添加到build.gradle来完成此操作:
check.dependsOn checkTodo
我希望在每个使用此插件的build.gradle中删除对此行的需要,方法是在插件本身中声明此依赖项。这可能吗?
我尝试过的事情:
static void applyTasks(final Project project) {
TodoTask task = project.tasks.create("checkTodo", TodoTask)
project.task('check').dependsOn(task)
project.tasks().task('check').dependsOn(task)
project.tasks().check
project.getAllTasks(true).get('check').dependsOn(task)
project.getDefaultTasks().get('check').dependsOn(task)
}
project.task('check').dependsOn(task)
给出:
无法应用插件[class'org.gradle.language.base.plugins.LifecycleBasePlugin']
不允许在使用标准Gradle生命周期插件时声明自定义“检查”任务。
project.getAllTasks(true).get(project)
的集合不包含“检查”任务,其他人只是给出“找不到方法”错误。
答案 0 :(得分:0)
问题是,在您应用插件时,特定(或任何)check
任务可能不存在。
要确保创建所有任务(甚至通过build.gradle
中的用户代码),请使用afterEvaluate
闭包。请注意,如果在整个构建中不会创建名为check
的任务,则此方法仍会失败。
project.afterEvaluate {
project.tasks['check'].dependsOn task
}
如果您想依赖于特定插件的任务创建(例如Java插件),请使用项目插件管理器的withId
或withPlugin
方法。如果应用特定插件,将执行给定的闭包。
project.pluginManager.withPlugin('java') {
project.tasks['check'].dependsOn task
}