通过 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 源代码中...
我有一个 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 源代码中...