2017-03-16 37 views
0

我的問題是我已經在我的類路徑中放置了格式良好的屬性文件,並告訴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

回答

0

這(與之間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

相關問題