Grails应用程序中的类路径属性文件未被使用

问题描述:

我的问题是我已经在我的类路径中放置了格式良好的属性文件,并告诉grails在我的类路径中查找属性文件,但是文件中的属性aren没有压倒现有的。Grails应用程序中的类路径属性文件未被使用

在我的Config.groovy我有台词:

grails.config.locations = [ "classpath:${appName}-config.properties", 
          "file:./${appName}-config.properties"] 

// verified that appName is being used. It prints out classpath:XXX-config.properties, as expected, where XXX is my appname. 
println "grails.config.locations: ${grails.config.locations}" 

在我XXX-config.properties,我指定不同的数据库连接的URL(这是一个我想用):

dataSource.url=jdbc:postgresql://products.yyyyy.ap-southeast-1.rds.amazonaws.com:5432/mydatabasename 

然后我把XXX-config.properties放到我的类路径中并启动tomcat7,但是引发了错误,说它找不到我故意假的数据库,这意味着数据库属性没有被覆盖。

现在我想我的类路径是错误的,但我做ps aux | grep tomcat告诉我tomcat7的命令行arg包含“-classpath:/ home/jbu /:_ other_paths_here_”。注意我把我的属性文件放在/home/jbu/XXX-config.properties。我对这个领先的冒号略有担心,但似乎没有引起任何其他问题。

因此,类路径目录显示正确,所以现在我想也许我的属性文件没有正确格式化,所以我添加了一个硬的“文件:/home/jbu/XXX-config.properties”到我的grails.config。位置,并且找到并成功覆盖了属性,这意味着属性文件本身没有任何问题。

我在这里没有更多的想法。有人可以帮我吗?


旁注:我修改为tomcat7 CLASSPATH变量通过加入这一行到/usr/share/tomcat7/bin/setenv.sh:

export CLASSPATH="${CLASSPATH}:/home/jbu/" 
+0

看一看这个项目https://github.com/vahidhedayati/kchat - 我认为你是对的Grails 2 - 这说明,并提供例如CONFIGS以及Tomcat的配置用于让它这样做 - 希望它有助于 – Vahid

+0

@vahid所以你设置一个env var或传递一个属性,将指定文件路径吗?在我的情况下,tomcat实例不受我控制,甚至可以自动作为更高权限级别来启动。每次我想要启动这样的应用程序时,我都无法轻松地修改tomcat脚本来导出新属性。但是,如果我可以添加东西到类路径然后它更容易一些,因为我不必乱搞tomcat配置。 – jbu

+0

@vahid yes im on grails 2.4.5。这个功能应该工作吗?坦率地说,我有点厌倦了Grails,只是没有做到我期望的并且能够找到如此少的支持和答案 – jbu

这(与之间Grails中许多其他东西,它似乎)被打破。叹息......我使用的是Grails 2.4.5,所以我有点惊讶它自1.3.5以来已经被破解了。

http://jay-chandran.blogspot.com/2010/10/grails-using-external-properties-file.html

Grails 1.3.5: How to configure Datasource.groovy to either connect to MySQL or SQL Server

+0

2年前发布了Grails 2.4.5。使用2年版本评论项目的状态不是一个公正的评估。 Grails 3有一个外部配置插件提供此功能。 –

+0

@JamesKleeh我非常清楚地指定了我正在使用的版本。 – jbu