我正在使用sbt assembly jar插件来创建一个独立的jar文件。我的项目文件夹结构如下所示:
MyProject
-src
- main
- scala
- mypackages and source files
- conf // contains application.conf, application.test.conf and so on
- test
-project // contains all the build related files
- README.md
我现在希望能够针对我指定为System属性的application.conf版本运行我生成的胖jar!
所以这就是我在单元测试中所做的事情!
System.setProperty("environment", "test")
这就是我在src文件夹中的一个文件中加载配置的方法:
val someEnv = Option(System.getProperty("environment", "")).filter(_.nonEmpty) // gives me some(test)
val name = s"application.${someEnv.get}.conf"
我可以看到环境变量已设置,我得到环境传递它。但是后来我加载了application.test.conf,如下所示:
ConfigFactory.load(name).resolve()
然而它只加载edfault application.conf而不是我指定的那个!
我的情况有什么问题?我应该把conf文件夹放在哪里?我正在尝试对着我在测试文件夹中的单元测试运行它!
答案 0 :(得分:0)
我认为您需要指定配置文件的全名。 .conf
是可选的。试试
ConfigFactory.load(s"application.${someEnv.get}").resolve()
ConfigFactory.load(String)
的{p> The docs表示您需要提供
类路径上的资源的名称(可选择没有扩展名)
答案 1 :(得分:0)
确定!这是我必须做的!更改配置文件所在文件夹的名称。我最初把它当作conf而且我不得不将它重命名为资源并且它起作用了!