Grails的'插件和依赖应用程序中的Config.groovy

时间:2014-04-28 18:00:07

标签: grails groovy configuration grails-plugin

我正在制作一个Grails插件和几个将使用该插件的Grails应用程序。

我想定义一些属性并在插件中为它们提供默认值,但允许应用覆盖它们的值(可选)。这个问题围绕着如何以这种方式连接插件和子应用程序的机械细节。

说我希望我的插件(grails-myplugin)在其Config.groovy中定义以下属性:

myplugin {
    fizz {
        whistles = true  // Default for all child apps using this plugin
        buzz = 3         // Default for all child apps using this plugin
    }
}

grails.plugins.anotherPlugin.widget = 'auto'
grails.plugins.anotherPlugin.foo = '${myplugin.fizz.buzz}-40'  // Hence, by default, is '3-40'

现在,我想要一个孩子Grails应用,比如,myapp.war(使用grails-myplugin)来覆盖2 fizz个属性:

// myapp's Config.groovy:
myplugin {
    fizz {
        // whistles property not defined here so this app uses the
        // plugin's default of "true"

        // Overrides the plugin's value of 3; this imples
        // grails.plugins.somePlugin.foo is '12-40'
        buzz = 12
    }
}

这里有几个问题:

  1. 我是否已根据所需功能正确放置所有内容?

  2. 使用上述配置,在grails-myplugin' Config.groovy中,我收到一条错误消息:

      

    此行有多个标记: - 无法解析groovy.lang.MetaClass类型。它是从所需的.class文件间接引用的。 - 无法解析groovy.lang.GroovyObject类型。它是从所需的.class文件间接引用的。

  3. 我收到此错误这一事实告诉我,我以太尝试做一些在Grails中不可能完成的事情,或者说我做错了。想法?

1 个答案:

答案 0 :(得分:0)

这里有石英插件如何解决它: https://github.com/grails-plugins/grails-quartz/blob/master/QuartzGrailsPlugin.groovy 看看loadQuartzConfig方法。

另请注意,grails插件会排除它的某些部分以避免安装时出现问题。它在插件文件上配置如下:

def pluginExcludes = [
        'grails-app/jobs/**',
        'src/docs/**',
        'web-app/**'
    ]