这个自定义插件存在于 gradle 中buildSrc/
:
abstract class MyTask : DefaultTask() {
@get:Input
abstract val buildDir: Property<String>
@TaskAction
fun someTask() {
// do stuff
}
}
class DevelopmentPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.tasks.run {
register("myTask", MyTask::class.java) {
inputs.property("buildDir", project.buildDir)
println(inputs.getProperties())
}
}
}
}
并通过运行例如$ ./gradlew myTask
失败的任务:
Could not determine the dependencies of task ':myTask'.
> Cannot query the value of task ':myTask' property 'rootDir' because it has no value available.
prinln 输出也{buildDir=null}
意味着inputs.property("buildDir", project.buildDir)
失败。
如何project.buildDir
从任务中的插件传递值?
由于 Gradle 的孵化构建缓存功能project.buildDir
,直接从任务内部使用不是一个可接受的答案。