grails如何知道在哪里查找属性文件,我可以覆盖此位置吗?

时间:2012-03-01 22:43:42

标签: grails jetty

当我将grails生成的war文件部署到jetty时,我收到以下错误。我的问题是我们如何告诉grails在哪里查找这个配置文件?它适用于grails run-app,因为它从该文件存在的项目库运行,但在运行jetty时会出现此错误。

  

org.codehaus.groovy.grails.commons.cfg.ConfigurationHelper - 无法加载指定的配置位置文件:./ grails-app / conf / something-config.properties

3 个答案:

答案 0 :(得分:2)

如果你将文件与war捆绑在一起,那么将它放在grails-app/conf中应该把它放在类路径的根目录中。如果没有,则将其移至src/java,因为这肯定适用于run-app和战争。然后在Config.groovy中将其注册为外部配置:

grails.config.locations = ["classpath:something-config.properties"]

如果你想从战争中单独部署它(例如,让一个战争在多个部署中运行,每个部署都有自己的配置文件),那么你将对Config.groovy进行相同的更改,但是将其复制到某个地方Jetty的类路径。我对Jetty并不熟悉,但我知道Tomcat的lib目录在它的类路径中,所以我把这样的文件放在那里。我假设Jetty有一个类似的位置,您可以放置​​应加载的罐子和资源。

答案 1 :(得分:1)

答案 2 :(得分:1)

这是一个很好的问题。我的Config.groovy将这些行注释掉了。我想知道你的是否有你想读的特殊外部配置:

// locations to search for config files that get merged into the main config
// config files can either be Java properties files or ConfigSlurper scripts

// grails.config.locations = [ "classpath:${appName}-config.properties",
//                             "classpath:${appName}-config.groovy",
//                             "file:${userHome}/.grails/${appName}-config.properties",
//                             "file:${userHome}/.grails/${appName}-config.groovy"]

// if(System.properties["${appName}.config.location"]) {
//    grails.config.locations << "file:" + System.properties["${appName}.config.location"]
// }