2013-04-16 43 views
1

我在做什么似乎是最好的做法,在Grails中使用外部配置文件。自动化使用外部配置文件中的Grails

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

我在测试过程中将配置文件放在根文件夹中,它工作。我在生产过程中手动将配置文件放入我们的Tomcat服务器的lib文件夹(在类路径中)并且工作。但我不想每次都需要复制/创建我们的外部配置文件。建立战争和部署应用后,有可能是我的配置文件被移动到正确的位置,这样我就没有我的任何应用程序的部署过程中手动移动呢?谢谢。

回答

0

注:我可以编辑问题的标题,以反映实际的问题,就是关于自动化。

这取决于手动您现有的流程是怎么...

让我们想象一下如下:

  • 你有一个持续集成引擎,如詹金斯/哈德森运行
  • SCP/rsync的在成功的外部配置文件建立
  • 您部署在成功BU应用到服务器ILDS(假设GANT下PROJECTNAME部署脚本/脚本 - >的Tomcat,JBoss和WebSphere中
0

在了项目中,我们需要为每个环境不同的配置设置(本地,开发,测试, 生产)。尽管我们希望避免更新不同服务器上的配置文件的麻烦,但我们确实需要在特定环境中快速覆盖配置值。

,以适应这些要求,我们的“级联”配置文件中的以下设置:

  • common.properties捆绑在.war文件,并总是加载
  • xxx.properties文件中捆绑.war文件,并且根据环境变量(appEnv)一个或没有这些配置文件的值被加载(例如,如果环境变量是YYY,yyy.properties被装载)的本地文件系统上
  • 配置文件使用appEnv和appLibRoot环境变量找到。如果找到与appEnv.properties相对应的配置文件,则最后加载它。

通过简单地在Config.groovy中提供配置文件位置列表来完成在Grail应用程序的startp上加载配置文件。 AppEnv类使用appEnv和appLibRoot环境变量创建配置文件列表,并检查哪些文件实际存在于类路径和文件系统中。

Config.groovy  
grails.config.locations = AppEnv.instance.configLocations