如何从自定义 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;
}