编辑:考虑到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"
}
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的值?
我正在使用gradle 2.3
最佳答案
试试这个:
定义类型为“MyExt”的名为“myext”的实例变量。
在“应用”方法中,执行以下操作:
myext = project.extensions.create('myext',MyExt)
在“getTarget”方法中,返回“myext.target”。
关于gradle - 如何使用GradleBuild任务在插件中正确使用gradle扩展?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29172838/