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



我有一个Java项目,我正在从Java 8迁移到Java 13。该项目使用资源包来实现语言本地化。

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

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

在与 Moditect 的作者讨论后,我提交了一个拉取请求,以在moduleInfo标签中添加对provides指令的支持。它还没有合并到Moditect源代码中...

最新更新