在grails-app / conf / config.groovy中 我有
grails.config.locations = [ "classpath:confDev1.groovy",
"file:${userHome}/confDev2.groovy"]
两个文件都存在。 在我评估时进行调试
grailsApplication.config.grails.config.locations
我得到了
"classpath:confDev1.groovy",
"file:adminLaptop/confDev2.groovy"
grails没有获取类路径文件。好像他没有翻译类路径,只是把它当作String。
正确添加了第二个文件。
如何在classpath中放置配置文件?
答案 0 :(得分:0)
grails.config.locations = [
"classpath:confDev1.groovy",
"file:${userHome}/confDev2.groovy"
]
将上面的代码放在grails项目的Config.groovy中意味着有两个配置文件 confDev1.groovy 和 confDev2.groovy 。一个存在于应用程序的类路径中,另一个存在于文件系统路径中。
这并不意味着grails会查看整个文件系统,然后将 confDev1.groovy 放到应用程序的类路径中。
要外化配置,一个好的方法是将外部配置文件放在项目的基本目录中。每当运行app或war creation event触发时,将此文件复制到classpath。
要将文件从基本目录复制到run-app或war-creation事件的类路径,您可以创建自定义脚本。
加入Grails活动
当您指定将从类路径或系统路径加载配置时,您需要连接到Grails事件以确保该文件位于类路径中。在 scripts / _Events.groovy 下创建一个文件,然后粘贴下面给出的代码。
//Hook into war creation event
eventCreateWarStart = { warName, stagingDir ->
ant.copy(todir: "${stagingDir}/WEB-INF/classes") {
fileset(file: "${basedir}/confDev2.groovy")
}
}
//Hook into run-app event
eventRunAppStart = {
ant.copy(todir:"${basedir}/target/classes") {
fileset(file: "${basedir}/confDev2.groovy")
}
}