【发布时间】:2013-01-09 22:53:23
【问题描述】:
我正在尝试在多个 Gradle 任务之间重用通用逻辑,类似于 this answer 中的建议,但我遇到了额外项目属性不可见的问题。
归结起来,这就是问题所在。假设我有一个根 Gradle 构建脚本,build.gradle,它设置了一个额外的项目属性,
project.ext.myProp = 'myValue'
我在settings.gradle 中定义了一个子项目,
include 'subproject'
子项目定义并使用引用该额外项目属性的自定义任务,
class CustomTask extends DefaultTask {
CustomTask() {
doFirst {
println project.ext.myProp
}
}
}
task custom(type: CustomTask) {
println 'custom task'
}
执行这个给了我这个:
FAILURE: Build failed with an exception.
...
* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating project ':subproject'.
...
Caused by: org.gradle.api.tasks.TaskInstantiationException: Could not create task of type 'CustomTask'.
...
Caused by: groovy.lang.MissingPropertyException: cannot get property 'myProp' on extra properties extension as it does not exist
...
BUILD FAILED
请注意,这似乎在以下情况下有效:
- 自定义任务在根项目中与额外属性一起定义
- 如果您使用动态属性而不是额外属性,但不推荐使用这些属性
【问题讨论】:
标签: properties task gradle extra