如何在Grails中覆盖插件配置?

时间:2012-09-28 17:32:52

标签: grails plugins configuration

我正在使用优秀的类图插件https://github.com/trygvea/grails-class-diagram,并希望覆盖我的应用程序Config.groovy文件中设置的配置值classSelection:https://github.com/trygvea/grails-class-diagram/blob/master/grails-app/conf/ClassDiagramConfig.groovy

以下任何一项似乎都不起作用:

grails.plugins.class-diagram.classDiagram.config.defaults.classSelection = "com.mypackage.*"
grails.plugins.class-diagram.config.preferences.defaults.classSelection = "com.mypackage.*"
grails.plugins.class-diagram.classDiagram.config.preferences.defaults.classSelection = "com.mypackage.*"

如何访问正确的命名空间以覆盖值?

谢谢!

2 个答案:

答案 0 :(得分:3)

Config属性的名称是任意的,它们不一定必须遵循任何特定的模式或约定,如包名。

如果您只有一个要覆盖的属性,则可以使用“flattened”语法:

classDiagram.preferences.defaults.classSelection = 'com.mypackage.*'

如果要将多个属性组合在一起,还可以使用闭包语法声明Config属性(如示例Config文件中所示):

classDiagram {
    preferences {
        defaults {
            classSelection = "com.mypackage.*"
            showAssociationNames = false
            showMethodReturnType = true
            showMethodSignature = false            
        }
    }
}

请注意,Grails插件系统不会自动将插件中的*Config.groovy文件加载到应用程序的Config中。插件开发人员可以设置一个插件,将默认的*Config.groovy文件合并到应用程序的Config中,在这种情况下,应用程序的Config.groovy中的属性通常会覆盖插件提供的Config属性。

答案 1 :(得分:0)

Config.groovy中设置的属性将覆盖插件的Config.groovy属性(如果它们具有相同的名称)。您正在为属性添加包,但这不是必需的。使用

classDiagram.preferences.defaults.classSelection = "com.mypackage.*"