通过 moditect maven 插件在 Java 13 模块中添加 ResourceBundle 服务提供者指令

Add a ResourceBundle service provider directive in a Java 13 module through moditect maven plugin

我有一个 Java 项目,我正在从 Java 8 迁移到 Java 13。这个项目使用 ResourceBundles 来启用语言本地化。

在 Java 8 中,我为 ResourceBundle.getBundle(baseName, control) 提供了自定义 ResourceBundle.Control,但这在 Java 9+ 中不再起作用。据我了解,我必须改为提供自定义 ResourceBundleProvider 接口,我称之为 UiProvider,以及该接口的实现 UiProviderImpl,它必须用作服务。

为了生成模块描述符,我使用了 moditect maven 插件。但看起来我不能在任何地方添加 provides 指令,只能导出、打开和使用指令。还是我错过了什么?这是我的 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>

在我写问题时,Moditect 不支持 moduleInfo 标签中的 provides 指令。 唯一的办法是使用moduleInfoSource标签,这迫使开发者直接写module-info.java的实际内容,不太令人满意。

discussing with the author of Moditect, I submitted a pull request 之后,在 moduleInfo 标签内添加对 provides 指令的支持。它还没有被合并到 Moditect 源代码中...