编辑:我重新表述了我的问题,考虑到了 David M. Karr 的提议。
我正在写一个 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"
}
摇篮构建文件:
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 的值?
我正在使用 gradle 2.3