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
от пути к классам.
Это то, что вам нужно пересмотреть,
что ключ для загрузки нужного файла.
Ваш текущий код правильный, как есть,
это вопрос конфигурации классов.
Ответ 2
Я думаю,
Source.fromInputStream(
getClass.getClassLoader.getResourceAsStream("/automation.properties")
)
должен работать.
Документы API
Источник # fromInputStream
КласС# getClassLoader
ClassLoader # getResourceAsStream
Ответ 3
Java и т.д. SCALA, имеют разные способы чтения файла свойств, в одном из моих ответов я объясняю разницу между чтением из файла свойств внутри файла Jar и свойств в месте на диске.
См. мой ответ ЗДЕСЬ:
Загрузка свойств из JAR файла (java 1.6)
Это будет работать и для JAVA, и для SCALA! (Обратите внимание, что для SCALA вы можете изменить основной синтакс, но ту же концепцию)
Надеюсь, что это поможет!