Как принудительно использовать правильный файл ресурсов при вызове из другого модуля - PullRequest
0 голосов
/ 18 февраля 2020

Вот сценарий (newb ie, чтобы зажечь scala, так что будьте добры ко мне)

1) У меня есть модуль A и файл конфигурации в папке ресурсов. Класс C в модуле A читает эту конфигурацию, чтобы получить информацию о путях к файлам

2) Я пытаюсь вызвать класс C (модуль A) из модуля B (после импорта зависимостей модуля A в модуль B)

3) Проблема, с которой я сталкиваюсь, - это код класса C (модуль), когда он вызывается из модуля B, использует конфигурацию из модуля B вместо собственной конфигурации в модуле A

Примечание: код работает отлично, когда я вызываю в модуле A, но как только я перемещаю этот код в модуль B, он использует файл ресурсов в модуле B вместо файла ресурсов модуля A.
обе конфигурации имеют одинаковое имя.

1 Ответ

1 голос
/ 18 февраля 2020

Из обсуждения моего первоначального ответа, который предполагал Lightbend Config (обычно используется в мире Scala), было обнаружено, что какой-то config.xml находится в src/main/resources для соответствующих модулей. Эти файлы оба попадают в путь к классам, и каждый модуль пытается (посредством на данный момент неуказанным способом) загрузить ресурс config.xml.

JVM при запросе на загрузку ресурсов всегда загружает первое, соответствующее.

Самый простой способ в небольшом наборе проектов для устранения этого коллизии - не сталкиваться, назначая конфигам в каждом проекте разные имена.

Альтернативой, которая жизнеспособна в большем наборе проектов, является использовать Lightbend Config , который позволяет включать файл конфигурации из коробки, а также возможность использовать переменные среды для простого переопределения конфигураций во время выполнения.

Продуманная стратегия для большего набора проекты, в зависимости от того, насколько совместимы схемы XML для различных модулей config.xml (если они читаются с использованием схемы), должны определить пользовательский процесс сборки Maven, который встраивает config.xml внутри друг друга, так что код в модуле A и модуле B может совместно использовать config.xml: A заботится только о части Конфиг, полученный из A и B, заботится только об этом из B. Я не особенно знаком с тем, как это можно сделать в Maven, но я не могу придумать причину, по которой это было бы невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...