2011-05-25 89 views
4

我想以幾種方式使用配置文件的內容,包括集成測試和我的BootStrap。如果我的配置文件在src/groovy下並且被稱爲「com.corp.MyConfig.groovy」,那麼我應該傳遞給ConfigSlurper解析方法?我可以使用ConfigSlurper引用類路徑中的配置文件嗎?

+0

配置=新ConfigSlurper()解析(新文件(CONFIGFILE).toURI()的toURL()。 )如果「configFile」是「src/groovy/com/corp/MyConfig.groovy」,但我希望有更優雅的東西 - 一個不包含「src/groovy」的表達式,尤其如此。 – 2011-05-25 15:38:15

回答

2

我猜會發生什麼是你的Groovy文件被編譯,並最終成爲一個類在你的二進制目錄(classpath)中。嘗試加載腳本類,而不是嘗試通過URL加載它。

Class scriptClass = getClass().classLoader.loadClass('com.corp.MyConfig') 
ConfigObject config = new ConfigSlurper().parse(scriptClass) 
2

如果你的配置文件可在classpath,我會建議使用ClassLoader.getResource方法,()得到它:

URL url = MyClass.class.getClassLoader().getResource("com/corp/MyConfig.groovy"); 
config = new ConfigSlurper().parse(url); 
+0

這應該在單元測試環境中工作,對嗎?我正在使用單元測試類名稱作爲「MyClass」; 'url'爲空。 – 2011-05-25 16:16:14

+0

嗯,這意味着它無法在類路徑中找到你的配置。嘗試將資源名稱更改爲「groovy/com/corp/MyConfig.groovy」。 – dogbane 2011-05-25 16:31:36

+0

沒有運氣,加入「groovy」的路徑。 – 2011-05-25 16:59:21

相關問題