Добавьте директиву поставщика услуг ResourceBundle в модуль Java 13 через плагин moditect maven

У меня есть проект Java, который я перехожу с Java 8 на Java 13. Этот проект использует ResourceBundles для включения языковой локализации.

В Java 8 я предоставил пользовательский ResourceBundle.Control для ResourceBundle.getBundle(baseName, control), но это больше не работает в Java 9+. Насколько я понимаю, вместо этого я должен предоставить настраиваемый интерфейс ResourceBundleProvider, который я назвал UiProvider, и реализацию этого интерфейса UiProviderImpl, который должен использоваться в качестве службы.

Для создания дескрипторов модулей я использую плагин moditect maven. Но не похоже, что я могу добавить директиву provide где угодно, только директивы export, opens и uses. Или мне что-то не хватает? Вот выдержка из моего pom.xml с тем, что я пытался настроить. Это можно исправить?

<module>
        <moduleInfo>
                 <name>net.babelsoft.negatron</name>
                 <opens>net.babelsoft.negatron;</opens>
                 <uses>theme.language.spi.UiProvider</uses>
                 <provides>theme.language.spi.UiProvider with theme.language.spi.UiProviderImpl</provides>
        </moduleInfo>
 </module>

1 ответ

Решение

В то время, когда я писал свой вопрос, Moditect не поддерживал provides директива в moduleInfoтег. Единственный способ - использоватьmoduleInfoSource тег, который заставляет разработчика напрямую писать фактическое содержимое module-info.java, не очень хорошо.

После обсуждения с автором Moditect я отправил запрос на включение, чтобы добавить поддержкуprovides директива в moduleInfoтег. Он еще не был объединен с исходным кодом Moditect...

Другие вопросы по тегам