Scala jar читает файл внешних свойств

Я написал код и экспортировал его как файл jar. В этом банке есть файл с именем automation.properties со значениями по умолчанию, которые я загружаю с помощью

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

Но когда этот файл jar добавляется как зависимость gradle в C:\User\abc\.gradle, и я хочу прочитать automation.properties из моего текущего проекта, как я могу переопределить местоположение и прочитать файл из моего проекта, а не из jar файл?

Ответ 1

загрузчик классов загрузит файл из найденного им местоположения.

В вашем случае файл существует в двух местах:

  • Внутри самого текущего проекта
  • Внутри зависимостей jar

Какой файл будет найден загрузчиком класса, зависит от порядка "текущего проекта" и зависимости jar от пути к классам. Это то, что вам нужно пересмотреть, что ключ для загрузки нужного файла.

Ваш текущий код правильный, как есть, это вопрос конфигурации классов.

Ответ 3

Java и т.д. SCALA, имеют разные способы чтения файла свойств, в одном из моих ответов я объясняю разницу между чтением из файла свойств внутри файла Jar и свойств в месте на диске.

См. мой ответ ЗДЕСЬ: Загрузка свойств из JAR файла (java 1.6)

Это будет работать и для JAVA, и для SCALA! (Обратите внимание, что для SCALA вы можете изменить основной синтакс, но ту же концепцию)

Надеюсь, что это поможет!