如何从自定义gradle插件中读取深度大于1的扩展?

时间:2015-01-06 12:24:15

标签: groovy gradle build.gradle

我想创建一个自定义扩展名,其动态名称为

myExt {
  aNameChoosenByUser{
    firstname = 'toto'
    age       = 2
  }
  aNameChoosenByUser2{
    firstname = 'tata'
    age       = 3
  }
}

我经常使用:

project.extensions.create("myExt", APluginExtension)

但是我不知道什么时候创建插件“aNameChoosenByUser”,“aNameChoosenByUser2”。我想让用户定义它。迭代之后,因为它是HashMap<String,APluginExtension>

我不想在我的插件中定义“aNameChoosenByUser”。

可以用groovy / gradle做到吗?

感谢

1 个答案:

答案 0 :(得分:1)

您要创建的是NamedDomainObjectContainer,可以通过调用Project.container()并传递类型来完成。在这种情况下,您不想为扩展名定义类型,而是要为容器的模型对象定义类型。

project.extensions.create('myExt', project.container(User.class))

public class User {
    String firstname;
    String age;
}