在我的gradle插件中,我正在使用其他build.gradle脚本,如下所示:
build.gradle:
sciptInstance {
name {
arrayWithObjects = [
{
var1 = "val1"
var2 = "val2"
{
]
}
}
在gradle插件中,我声明了容器来保存ScriptClass类的实例.此类具有字段arrayWithObjects. arrayWithObjects的元素的类声明如下:
MyClass {
def var1
deg var2
}
在我的SciptClass中:
ScriptClass {
// other fields
MyClass[] arrayWithObjects
// constructor and so on..
}
尝试构建脚本时,我收到一个强制转换异常,说我无法将闭包转换为对象.我试图在build.gradle中用其他括号等声明arrayWithObjects,但没有任何效果.我也不知道该在哪里寻找它.也许你们当中有些人曾经遇到过这个问题?
提前致谢.
编辑:
要重现此内容:
插入:
apply plugin: MyPlugin
apply from: 'example.gradle'
class MyPlugin implements Plugin<Project> {
void apply(Project project) {
def examples = project.container(ScriptClass)
project.extensions.examples = examples
}
}
class ScriptClass {
String name
MyClass[] arrayWithObjects
ScriptClass(String name) {
this.name = name
}
}
class MyClass {
def var1
def var2
}
example.gradle:
examples {
example {
arrayWithObjects = [
{
var1 = "val1"
var2 = "val2"
}
]
}
}
在main build.gradle中,应用此插件并调用任何任务.
解决方法:
Here您可以找到一个解决问题的演示.基本上,您需要使用Map而不是Closure:
examples {
example {
arrayWithObjects = [
[var1: 'varvar1', var2: 'varvar2']
]
}
}