EDIT: я перефразировал свой вопрос, приняв во внимание предложение Дэвида М. Карра.
Я пишу плагин Gradle. Этот плагин запускает задачу, расширяющую GradleBuild. Внешнему файлу сборки Gradle нужна некоторая информация в качестве параметров. Эти параметры указаны в расширении проекта.
Код плагина
class MyPlugin implements Plugin<Project> {
def mExt
void apply(Project project) {
mExt = project.extensions.create('myext',MyExt)
project.task('myTask', type:GradleBuild){
def param = new StartParameter()
param.setProjectProperties([target:getTarget()])
// Problem here
startParameter = param
buildFile = getMyBuildPath()
tasks = [
'build',
'generateDebugJavadocJar'
]
}
}
def getMyBuildPath(){
...
}
// Problem here
def getTarget(){
return {mExt.target}
}
}
class MyExt {
def String target = "uninitialised"
}
Файл сборки Gradle:
apply plugin : 'com.example.myplugin'
ext{
target = "myTarget"
}
Внешний файл сборки Gradle:
task build(){
println project.target
}
Если я помещу замыкание в getTarget()
, println project.target
покажет замыкание, а не строку.
Если я не поставлю закрытие:
// Problem here
def getTarget(){
return mExt.target
}
Затем я получил «неинициализированный» вместо «myTarget».
Как я могу получить здесь значение myext.target?
Я использую град 2.3