我来自C#.NET世界,当我构建我的Scala项目时,我注意到在开源社区中有多少不同的方法可以做。无论如何在.Net C#项目中我们有Web.config
或App.config
文件,这对于指定全局使用的app键非常有用,它也有助于转换不同的环境等。
什么是Scala SBT项目的等价物?您知道存储连接字符串和其他应用程序设置的位置吗?
没有通用配置文件名。基本的方法是使用Properties
,参见例如how to read properties file in scala,并将文件命名为your-application-name.properties
。但是有一个名为Config的流行图书馆,我建议这样做;正如https://github.com/typesafehub/config#standard-behavior所说,它的配置文件的标准名称是
便捷方法ConfigFactory.load()加载以下内容(首先列出的是更高优先级):
- 系统属性
- application.conf(具有此名称的classpath上的所有资源)
- application.json(具有此名称的classpath上的所有资源)
- application.properties(具有此名称的classpath上的所有资源)
- reference.conf(具有此名称的classpath上的所有资源)
我们的想法是库和框架应该在他们的jar中附带reference.conf。应用程序应该提供application.conf,或者如果他们想在单个JVM中创建多个配置,他们可以使用ConfigFactory.load(“myapp”)来加载他们自己的myapp.conf。 (如果需要,应用程序也可以提供reference.conf,但您可能没有必要将它与application.conf分开。)
正如@ ashalynd的回答所说,为了让任何这样的库看到你的配置文件,他们应该进入src/{main,test}/resources
。
我想你在谈论application.conf
。它可以在/src/main/resources
或/src/test/resources
中找到(分别影响主要和测试设置)。如果在application.conf
中不存在/src/test/resources
,则主要的application.conf
将用于测试。