在grails中加载外部属性文件

时间:2013-02-13 05:50:29

标签: grails properties groovy

我正在尝试通过设置系统环境在外部加载属性文件。

在我的config.groovy文件中,

  println "Config file location --->" + System.getenv("SAM_ENV")
  grails.config.locations = ["file:"+ System.getenv("SAM_ENV")]

我已将系统env SAM_ENV值设置为C:\ test \ config.properties。

当我尝试运行应用程序时,我将打印值设为

     Config file location ---> C:\test\config.properties prints properly.

问题是当我尝试以控件的形式访问属性文件时

        print "PAGINATION1"+grailsApplication.config.PAGINATION1

PAGINATION1的值未正确打印。

任何人都可以帮助我在grails应用程序中访问外部属性文件时必须执行哪些配置。

2 个答案:

答案 0 :(得分:0)

Add the below line in config.groovy

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

environments {
    development {   
        grails.logging.jul.usebridge = true
        grails.config.locations = ["file:C:\\conf\\externalfile.groovy"]
    }
    production {
        grails.logging.jul.usebridge = false
        grails.config.locations = ["file:/opt/config/externalfile.groovy"]
        // TODO: grails.serverURL = "http://www.changeme.com"
    }
}

If you want to access any property from external configuration(config.groovy) then just declare the property like 

property = property value eg:(ImagePath = "C:\\Users\\Saved Pictures")

access it like grailsApplication.config."property"

eg:(grailsApplication.config.ImagePath)

NOTE: dont use def just a property and its value.

答案 1 :(得分:-1)

您正在寻找的是扩展类路径,您可以通过在_Events.groovy中添加后期编译事件来实现。试试这个:

eventCompileEnd = {
ant.copy(todir:classesDirPath) {
     fileset(file:"C:\test\config.properties")
}}

您可以找到更多帮助here