Scala jar读取外部属性文件

Swa*_*wal 10 java scala jar gradle maven

我编写了一些代码并将其导出为jar文件.在这个jar中有一个名为automation.propertiesdefaults 的文件,我正在使用它加载

val automationPropertiesFileURL = getClass.getResource("/automation.properties")  
  if (automationPropertiesFileURL != null) {
    val source = Source.fromURL(automationPropertiesFileURL)
    config = new Properties()
    config.load(source.bufferedReader())
  }
Run Code Online (Sandbox Code Playgroud)

但是当这个jar文件被添加为gradle依赖项C:\User\abc\.gradle并且我想automation.properties从我当前的项目中读取时,如何覆盖该位置并从我的项目中读取文件而不是从jar文件本身?

Sto*_*ica 5

类加载器将从它首先找到的位置加载文件.

在您的情况下,该文件存在于两个地方:

  • 在当前项目本身内部
  • 在一个jar依赖

类加载器将找到哪个文件,取决于"当前项目"的顺序以及jar类路径的依赖性.这就是你需要审查的内容,这是加载正确文件的关键.

您当前的代码是正确的,这是类路径配置的问题.


Mar*_*ijn 2

我认为

Source.fromInputStream(
  getClass.getClassLoader.getResourceAsStream("/automation.properties")
)
Run Code Online (Sandbox Code Playgroud)

应该管用。


API文档

来源#fromInputStream

类#getClassLoader

类加载器#getResourceAsStream