2011-05-25 64 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

相关问题