带有conf文件夹的Scala Standalone JAR

时间:2017-05-15 15:28:26

标签: scala typesafe-config

我正在使用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文件夹放在哪里?我正在尝试对着我在测试文件夹中的单元测试运行它!

2 个答案:

答案 0 :(得分:0)

我认为您需要指定配置文件的全名。 .conf是可选的。试试

ConfigFactory.load(s"application.${someEnv.get}").resolve()
ConfigFactory.load(String)的{​​p> The docs表示您需要提供

  

类路径上的资源的名称(可选择没有扩展名)

答案 1 :(得分:0)

确定!这是我必须做的!更改配置文件所在文件夹的名称。我最初把它当作conf而且我不得不将它重命名为资源并且它起作用了!