2014-05-16 4 views
1

grailsApplication.metadata[key]을 사용하여 응용 프로그램의 application.properties에서 값을 가져올 수 있지만로드 된 Grails 플러그 인과 동일한 값을 얻는 데 어려움을 겪고 있습니다.Grails 플러그인의 application.properties에있는 값에 어떻게 액세스합니까?

나는 grailsApplication.mainContext.getBean('pluginManager').allPlugins을 시도했지만 해당 목록의 인스턴스에는 플러그인의 applications.properties 파일에있는 값이 포함되어 있지 않습니다.

나는 또한 GrailsPluginUtils.getMetadataForPlugin(pluginName)을 시도했지만 applications.properties에서도 값을 반환하지 않습니다. 사실, 나는 보통 null을 얻습니다.

런타임에이 값을 가져올 방법이 있습니까?

+0

플러그인의 'application.properties'중 앱에서 사용할 값은? – dmahapatro

+0

맞춤 값,'app.foo = "bar"'라고 말하면'metadata [ 'foo']'를 얻을 수 있습니다. –

+0

플러그인이'application.properties'에 커스텀 값을 넣는 이유는 무엇입니까? –

답변

0

나는 이것을 대답으로 좋아하지 않으므로 누군가가 올바른 방향으로 나를 가리키게되기를 바랍니다.

내가 플러그인 메타 데이터를 얻을 수있는 방법을 찾을 수 없기 때문에

, 나는 ( https://stackoverflow.com/a/20872275/489597 다음) application.properties 파일을 수동으로 플러그인을 읽고 있어요 : 그것은 나에게 지적되어있어

import org.codehaus.groovy.grails.plugins.GrailsPluginUtils 

GrailsPluginUtils.getPluginDirectories().collect { 
    Properties properties = new Properties() 
    File propertiesFile = new File("${it.getPath()}/application.properties") 
    propertiesFile.withInputStream { 
     properties.load(it) 
    } 
    properties 
} 

그이 원 ' application.properties 파일은 WEB-INF에 복사되지 않는 한 존재하지 않기 때문에 패키지 된 WAR에서 작동하지 않습니다.

1

@Michael 대답은 ​​실제로 더 좋게 만들 수 있습니다. 필요한 경우 def grailsApplication을 추가 한 다음 app.myprp${grailsApplication.metadata.'app.myprp'}과 같은 것을 사용하여 액세스하십시오.

관련 문제