Из обсуждения моего первоначального ответа, который предполагал 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, но я не могу придумать причину, по которой это было бы невозможно.