带有Gradle的JAR中的META-INF/服务
我想构建一个插件模块,可以使用ServiceLoader
加载。这需要向目录中添加一个文件,该文件以服务接口命名,并包含实现它的类的限定路径。然后,您可以通过调用 来加载这些服务。META-INF/services
ServiceLoader.load()
下面是一个示例:
假设我们要提供一个名为 的插件接口。然后,我们在类中提供此服务的实现。org.example.plugins.PluginService
org.example.plugins.impl.ExamplePlugin
如果我们想有某种插件机制,我们可以创建一个包含实现的JAR文件。此 JAR 文件还必须包含该文件 。此文件必须包含一行META-INF/services/org.example.plugins.PluginService
org.example.plugins.impl.ExamplePlugin
以启用 以查找实现。如果该 JAR 文件位于构建路径中,则可以通过调用ServiceLoader
Iterator<PluginService> it = ServiceLoader.load(PluginService.class).iterator();
该迭代器将为您提供访问.ServiceLoader
出于某种原因,默认情况下,Gradle 不会将文件包含在目录中。有没有办法让生成的JAR包含这样的文件?META-INF
我已经在类中找到了metaInf
方法。但是我对时髦的了解还不够好,无法自己找到解决方案。Jar