使用grails插件数据源

leo*_*ral 2 grails grails-plugin

我正在使用Grails 2.2.4构建一个插件.该插件是一个访问管理器,需要访问一些数据源(多个).正如Grails手册中提供的Basic Basic Artefacts,DataSource.groovy未与插件捆绑在一起.

有没有办法将插件DataSource.groovy文件中定义的数据源"复制"到使用该插件的应用程序的DataSource.groovy文件?

我真的不想在每个使用该插件的应用程序上手动定义插件数据源.

============

完整的堆栈跟踪(在评论中请求)

2013-12-11 11:39:33,055 ERROR org.codehaus.groovy.grails.web.context.GrailsConte
xtLoader - Error initializing the application: groovy.lang.MissingMethodExceptio
n: No signature of method: portal.Aplicacao.methodMissing() is applicable for ar
gument types: () values: []
org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMetho
dException: No signature of method: portal.Aplicacao.methodMissing() is applicab
le for argument types: () values: []
        at grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.
java:308)
        at grails.util.Environment.executeForEnvironment(Environment.java:301)
        at grails.util.Environment.executeForCurrentEnvironment(Environment.java
:277)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor     .java:908)
        at java.lang.Thread.run(Thread.java:662)
Caused by: groovy.lang.MissingMethodException: No signature of method: portal.Ap
licacao.methodMissing() is applicable for argument types: () values: []
        at portal.PortalService.criaAplicacaoNoPortal(PortalService.groovy:233)
        at BootStrap$_closure1.doCall(BootStrap.groovy:16)
        ... 8 more
Run Code Online (Sandbox Code Playgroud)

Eli*_*les 5

您可以使用platform-core插件,然后在doWithConfig插件部分中将dataSources定义为应用程序配置,如下所示:

def doWithConfig = { config ->

    // ...

    application {
        Environment.executeForCurrentEnvironment {
            development {
                    dataSource_myDatasource {
                        dbCreate = "create-drop"
                        url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
                        // other datasource configuration here...
                    }
                }
            }
            test {
                    dataSource_myDatasource {
                        // test datasource
                        dbCreate = "create-drop"
                        url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
                        // ...
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这不是Grails本身的一部分,而是platform-config插件的一个功能 (3认同)