我已将下面的代码添加到我的Config.groovy
文件中,但是,尽管有这个,但我无法访问Config.groovy文件中的外部配置属性。
有没有人可以在Config.groovy文件中访问外部配置文件的属性?
if (System.getProperty("CONFIG")) {
grails.config.locations << "file:" + System.getProperty("CONFIG")
} else {
grails.config.locations << "file:./${appName}-config.properties"
}
注意:我尝试使用${...}
,就像我在Spring配置文件ConfigurationHolder.config
和grailsApplication
中访问属性一样,但这些方法都不起作用。
感谢。
答案 0 :(得分:0)
我认为这会因配置文件的加载顺序而引起混淆。我很确定在加载Config.groovy的时候,还没有加载外部的。
所以你的“CONFIG”属性是在外部文件中设置的,这是你要加载的文件的名称?
我通常如何做这只是列出我可以使用的所有文件。
grails.config.locations = [
"file:../app-config/myapp-dataSource.groovy",
"file:../app-config/myapp-config.groovy"
]
environments {
development {
grails.config.locations = [
"file:../myapp-config/myapp-dataSource.groovy",
"file:../myapp-config/myapp-config.groovy",
"file:${userHome}/myapp-config/myapp-dataSource.groovy",
"file:${userHome}/myapp-config/myapp-config.groovy"
]
}
...
}
如果文件不存在,则会跳过它们。我认为文件按顺序加载,因此$ {userHome}目录中的任何内容都将覆盖以前设置的值。这对于开发很有用,因为您可以使用机器本地方式更改设置,而不必担心签入这些配置更改。
答案 1 :(得分:0)
@Nick Larson, 你提到的有关CONFIG未加载的内容不正确。如果CONFIG是一个JVM参数,使用-DCONFIG = xxxx设置,则在config.groovy启动之前设置它。
@ KIN1, 您正在使用file:protocol来访问属性文件。您是尝试在WAR或EAR文件中访问它还是基于文件的系统。 在WAR或EAR文件中,您需要使用classpath:对于文件,file:不起作用。此外,您必须确保在类路径中实际复制Groovy文件(不是已编译的类文件)。我们在WAR创建事件上执行此操作,构建过程将配置文件复制到类路径位置之一。
希望这有帮助。
答案 2 :(得分:0)
for (i = 0; i < n; i++) {
if( scanf("%104s", input) != 1 )
break; // didn't read a one string, break the loop!
// I got the input, let's insert it to the tree..
}