我想在我的插件扩展中设置属性Map。所以基本上我想写点像
settings {
envVars = {
a = "abc"
b = "dec"
...
n = "sdf"
}
}
当我在Extension类
中使用属性时private Map<?,?> envVars;
Gradle告诉我它无法设置属性设置。所以我想要实现的是在我的扩展类中设置值的映射。
我所做的就是在写下以下内容时获得结束:
settings {
envVars {
a = "abc"
b = "dec"
...
n = "sdf"
}
}
public class extension {
....
public envVars(Closure c){}
}
但是我不知道如何处理闭包以及如何访问内部的内容,所以我宁愿使用Map而不是闭包
此致 的Mathias
答案 0 :(得分:0)
好的,你只需要正确地写出地图:/
envVars = [test: 'test']
一切都很好
答案 1 :(得分:0)
我正在使用以下内容从build.gradle中读取值映射
参考:https://github.com/liquibase/liquibase-gradle-plugin
容器类:
class Database {
def name
def arguments = [logLevel: 'info']
Database(String name) {
this.name = name
}
扩展类:
class MyExtension {
final NamedDomainObjectContainer<Database> databases
def databases(Closure closure){
databases.configure(closure)
}
def methodMissing(String name, args) {
arguments[name] = args[0]
}
}
加载扩展程序
def databases = project.container(Database) { name ->
new Database(name)
}
project.configure(project) {
extensions.create("extensionName", MyExtension, databases)
}
样本build.gradle:
dbDiff{
databases{
db1{
url 'testUrl'
}
}
}