Config do Grails de feijão de mola em diferentes arquivos
Pergunta
Grails têm cofig para o feijão de primavera chamado resources.groovy
. E, como eu entendo dos documentos, permite que você inclua outro arquivo, usando o LoadBeans (%Path%)
Estou tentei com isso:
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
}
Mas quando o Grails está executando o registro seguindo o erro:
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
Roteiro security.groovy
existe em grails-app/conf/spring
e compilado por Grails Maven Plugin em target/classes/security.class
. Diretório target/resources/spring
está vazio neste momento
Como posso configurar Grails ou Grails-Maven-Plugin para copiar esses arquivos de configuração, não compilá-lo em classes?
PS Esse problema também apresenta quando tento incluir scripts de configuração usando grails.config.locations = [ %path% ]
lado de dentro conf/Config.groovy
, meus scripts groovy compilam em classes e, por causa disso, o Builer de Config do Grails não consegue encontrá -los :(
Solução
Você tentou:
println 'loading application config ...'
// Place your Spring DSL code here
beans = {
loadBeans("classpath:*security.groovy")
}
(Isso deve carregar todos os arquivos groovy no caminho de classe terminando com security.groovy
e analisá -los em definições de feijão).
Atualizar: Encontrou um Tópico interessante com esta mensagem Como referência e meu entendimento é que um truque é usar a formiga em scripts/_Events.groovy
Para copiar o .groovy
arquivo para o classesDirPath
diretor e simplesmente use:
beans = {
// load spring-beans for db-access via spring-jdbc-template
loadBeans('security.groovy')
// load some other spring-beans
...
}
Parece um hack para fazer as coisas funcionarem tanto na guerra quanto ao correr. Não tenho certeza de como as coisas "devem ser feitas" (se isso faz sentido).