我有一个Gradle插件,其中包含一些配置约定。
myplugin {
doSomethingOnBuild = true/false
}
在插件源中,我正在使用doSomethingOnBuild有条件地将任务(postProcessTask)添加到任务树。该任务是有条件的,原因是postProcessTask仅对于特定类型的构建是必需的。
projects.gradle.projectsEvaluated {
if(convention.doSomethingOnBuild == true) {
// add postProcessTask to tree using dependsOn
}
}
我对使用doSomethingOnBuild感到很奇怪,因为我需要将其包装在project.gradle.projectsEvaluated中,以便在配置阶段可以使用Conventional参数,并且gradle还会警告我有关动态属性的使用(已弃用)
有一个更好的方法吗?我不应该这样做吗?是否由用户来调用postProcessTask?
最佳答案
有条件地添加任务并不是很常见,但是没有更多的上下文,我不能说我是否愿意使用此解决方案或其他解决方案(为任务添加description
和group
,分为多个插件,等等)。在任何情况下,插件都会推迟对构建模型的访问,这是正常的,并且通常是强制性的,而gradle.projectsEvaluated
确实是这样做的一种方法。
关于“按需创建属性”的警告,这意味着有人在doSomethingOnBuild
项目上设置了名为:Test
的属性,尽管未声明任何此类属性。这可能暗示插件有问题,或者有人在应用插件之前尝试设置属性。
如果您严格按照Gradle的意义来指代约定对象,请注意,它们在很大程度上已被扩展对象代替。您可以在Gradle User Guide中了解有关扩展的更多信息。 (不过,这并不能解释弃用警告。)
关于gradle - 有条件地将任务添加到gradle的任务树中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21095942/