作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一个允许以下内容的Gradle插件:
myPluginConfig {
something1 {
// this is a closure
}
somethingElse {
// this is another closure
}
// more closures here
}
NamedDomainObjectContainer
来包装
Closure
集合,因此我设置了以下插件:
class SwitchDependenciesPlugin implements Plugin<Project> {
void apply(Project project) {
// add the extension
project.getExtensions().myPluginConfig = project.container(Closure)
// read the current configuration
NamedDomainObjectContainer<Closure> config = project.myPluginConfig
// test it out, always returns []
System.out.println(config)
}
}
project.extensions.create
吗?如果是这样,怎么办?
red
或
red
上定义了
project.ext
变量,则以下配置将添加
gson
项目:
myPluginConfig {
redTrue {
compile project(':red')
}
redFalse {
compile 'com.google.code.gson:gson:2.4'
}
greenTrue {
compile project(':green')
}
}
myPluginConfig
的动态名称,因此必须具有
Map
或
NamedDomainObjectContainer
。
最佳答案
您能否在此详细说明您要建模的内容?我认为您有两种选择。一种是使用NamedDomainObjectContainer。在这里,您需要一个代表“某物”的类。看一下Gradle用户指南中有关维护多个域对象的章节(请参阅https://docs.gradle.org/current/userguide/custom_plugins.html#N175CF),“内容”为“书”。如上所述的内置配置语法是免费提供的。
如果您希望具有类似上面的语法而无需维护多个域对象,则可以简单地将一个将Closure作为参数的方法添加到Extension类中:
void somethingToConfigure(Closure) {
}
关于gradle - Gradle扩展名为Closure的NamedDomainObjectContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34120270/
我是一名优秀的程序员,十分优秀!