Я пытаюсь повторно использовать общую логику между несколькими задачами Gradle, аналогично тому, что было предложено в этом ответе, но у меня возникают проблемы с дополнительным проектом свойства не видны.
Сварил, вот проблема. Скажем, у меня есть root Gradle build script, 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
Обратите внимание, что это работает, если:
- настраиваемая задача определяется в корневом проекте наряду с дополнительным свойством
- если вы используете динамические свойства вместо дополнительных свойств, но они устарели