如何从自定义 gradle 插件中读取深度大于 1 的扩展名?
How to read extentions with depth greater than one from custom gradle plugin?
我想创建一个带有动态名称的自定义扩展程序
myExt {
aNameChoosenByUser{
firstname = 'toto'
age = 2
}
aNameChoosenByUser2{
firstname = 'tata'
age = 3
}
}
我经常使用:
project.extensions.create("myExt", APluginExtension)
但是这里我不知道什么时候创建插件"aNameChoosenByUser","aNameChoosenByUser2"。我想让用户定义它。并且在迭代之后,因为它是 HashMap<String,APluginExtension>
.
我不想在我的插件中定义 "aNameChoosenByUser"。
可以用 groovy/gradle 吗?
感谢
您要创建的是 NamedDomainObjectContainer
,可以通过调用 Project.container()
并传递类型来完成。在这种情况下,您需要为容器的模型对象定义一个类型,而不是为您的扩展定义一个类型。
project.extensions.create('myExt', project.container(User.class))
public class User {
String firstname;
String age;
}
我想创建一个带有动态名称的自定义扩展程序
myExt {
aNameChoosenByUser{
firstname = 'toto'
age = 2
}
aNameChoosenByUser2{
firstname = 'tata'
age = 3
}
}
我经常使用:
project.extensions.create("myExt", APluginExtension)
但是这里我不知道什么时候创建插件"aNameChoosenByUser","aNameChoosenByUser2"。我想让用户定义它。并且在迭代之后,因为它是 HashMap<String,APluginExtension>
.
我不想在我的插件中定义 "aNameChoosenByUser"。
可以用 groovy/gradle 吗?
感谢
您要创建的是 NamedDomainObjectContainer
,可以通过调用 Project.container()
并传递类型来完成。在这种情况下,您需要为容器的模型对象定义一个类型,而不是为您的扩展定义一个类型。
project.extensions.create('myExt', project.container(User.class))
public class User {
String firstname;
String age;
}