У меня есть проект, в котором необходимо использовать ServiceLoader, чтобы быть независимым от имплементаций.
Я хочу запустить MainApp в Eclipse с зависимостью Maven от (внешнего) Spi-файла с AProvider (метод объявления интерфейсаX) и Service (перебирая сервис-провайдеров). MainApp вызывает Service.methodX и должен получить результат от AProviderImpl, который находится во внешнем Sp.jar.
Sp.jar имеет зависимость Maven от Spi jar и, конечно, src / main / resources / META-INF / services / fullclassnameAProvider с полным именем класса AProviderImpl
Таким образом, зависимости похожи на MainApp -> Spi <-Sp
А в репозитории Maven есть Spi.jar, Sp.jar и MainApp.ear </p>
Проблема заключается в том, что итерация для (Sp sp: ServiceLoader.load (AProvider.class)) в Service не находит какого-либо сервис-провайдера.
Я не хочу, чтобы Spi NOR MainApp знал о Sp по зависимости. Разве это не то, что ServiceLoader должен организовать?
Нужно ли явно добавлять Sp в путь к классам MainApp, и если да, то как в Eclipse?
Или я ошибаюсь, предполагая, что Spi и Sp должны быть в состоянии разделиться? Я думаю нет или я?
Спасибо за внимание, Кендзи