我想在我的应用程序中使用外部配置。随着它,我使用邮件插件,并希望将其配置存储在外部.property文件中。我chaged我的Config.groovy所以现在看起来对外部配置下USER_HOME/.grails/APP_NAME-configuration.properties:grails不读取外部配置值
environments {
development {
grails.logging.jul.usebridge = true
if (new File("${userHome}/.grails/${appName}-config.properties").exists()) {
println "*** User defined config ***"
grails.config.locations = ["file:${userHome}/.grails/${appName}-config.properties"]
}
}
.....
}
正如你可以看到有哪些,如果测试语句是配置文件存在。每当我看到“*用户定义的配置文件*”消息时,它就存在于应用程序启动时。
我在开发模式下运行应用程序。经过我的邮件插件的构云:
grails {
mail {
host = grailsApplication.config['mail']['host']
port = grailsApplication.config['mail']['host']
username = grailsApplication.config['mail']['username']
password = grailsApplication.config['mail']['password']
props = ["mail.smtp.auth": "true",
"mail.smtp.socketFactory.port": "465",
"mail.smtp.socketFactory.class": "javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback": "false"]
}
}
当我试图发送一个消息,电子邮件插件似乎电子邮件插件该配置未初始化 - 用户名,密码= null,并且主机,端口都有默认值( localhost和-1)。所以在我看来,config.properties文件是根本没有加载。我决定检查config.properties是否已经加载,并发现grailsApplication.config对象包含我在config.properties中定义的所有属性:mail.host,mail.port,mail.username,mail.password。我检查了是否可以使用grailsApplication.config ['property'] ['name']表达式(在调试模式下)获得相应的属性。该表达式为所有mail.host,mail.port,mail.username和mail.password提供了适当的值。我也尝试使用grailsApplication.config ['property.name'](带有一对括号和'。'),但是这个变体不起作用。 有人可以帮我处理这种情况吗?我花了差不多3次尝试不同的变体,仍然没有解决方案。谢谢。
外观像新的File()总是创建新文件 – 2014-09-03 13:57:51
不,我检查 – 2014-09-03 13:59:27
我认为grails.config.locations必须是config.groovy的最后一行,因此它可以覆盖所有内容 – 2014-09-03 14:00:46