Добавьте директиву поставщика услуг 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...