0

Grailsには、と呼ばれる春の豆のコフィグがありresources.groovyます。そして、私がドキュメントから理解しているように、loadBeans(%path%)を使用して別のファイルを含めることができます

私はこれで試しました:

println 'loading application config ...'


// Place your Spring DSL code here
beans = {
    loadBeans("classpath:security") //i'm tried with "spring/security" and "spring/security.groovy" also

}

しかし、grailsが実行されているときは、次のエラーがログに記録されます。

Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Error evaluating bean definition script: class path resource [security] cannot be opened because it does not exist
Offending resource: class path resource [security]; nested exception is java.io.FileNotFoundException: class path resource [security] cannot be opened because it does not exist
 at grails.spring.BeanBuilder.loadBeans(BeanBuilder.java:470)
 at grails.spring.BeanBuilder.loadBeans(BeanBuilder.java:424)
 at resources$_run_closure1.doCall(resources.groovy:13)
 at resources$_run_closure1.doCall(resources.groovy)
 ... 45 more

スクリプトsecurity.groovyはに存在し、 grailsmavenプラグインgrails-app/conf/springによってにコンパイルされます。現在、ディレクトリは空ですtarget/classes/security.classtarget/resources/spring

クラスにコンパイルするのではなく、この構成ファイルをコピーするようにGrailsまたはgrails-maven-pluginを構成するにはどうすればよいですか?

psこの問題は、grails.config.locations = [ %path% ]内部を使用して構成スクリプトをインクルードしようとしたときにも発生しますconf/Config.groovy。Groovyスクリプトはクラスにコンパイルされ、そのため、grails構成ビルダーはそれらを見つけることができません:(

4

1 に答える 1

1

試しましたか:

println 'loading application config ...'


// Place your Spring DSL code here
beans = {
    loadBeans("classpath:*security.groovy") 

}

(これにより、で終わるクラスパス上のすべてのGroovyファイルがロードされ、 security.groovyBean定義に解析されます)。

更新:このメッセージを参照として興味深いスレッドを見つけました。私の理解では、1つのトリックはant inを使用してファイルをdirにコピーし、次に単純に使用することです。scripts/_Events.groovy.groovyclassesDirPath

beans = {
    // load spring-beans for db-access via spring-jdbc-template
    loadBeans('security.groovy')

    // load some other spring-beans
        ...
}

これは、戦争とrun-appの実行の両方で物事を機能させるためのハックのように見えます。物事がどのように「行われるべきか」わからない(これが理にかなっている場合でも)。

于 2010-02-16T22:31:45.430 に答える