[英]ServiceLoader and META-INF/services generator between different modules in maven?
我想在Maven项目中的不同模块之间使用服务ServiceLoader。 我有一个称为iMage的父模块。 在父模块中,有一个名为jmjrst.main的模块,它有一个称为'JmjrstPlugin'的公共抽象类。
然后是另一个名为prizm-plugin的模块,具有以下类:公共类HelloWorldPlugin扩展了JmjrstPlugin {...}。 我将jmjrst.main添加为对prizm-plugin和vica-versa的依赖项。
为了使用ServiceLoader,我想使用META-INF / services generator 。 我将以下行添加到prizm-plugin的pom.xml中:
<dependency>
<groupId>org.kohsuke.metainf-services</groupId>
<artifactId>metainf-services</artifactId>
<version>1.1</version>
<optional>true</optional>
</dependency>
并且类HelloWorldPlugin像这样开始:
@MetaInfServices(JmjrstPlugin.class)
public class HelloWorldPlugin extends JmjrstPlugin{ ... }
在META-INF / services生成器的网站上显示:“当在JavaSE6中使用javac时,将自动生成META-INF / services / *文件。不需要其他编译器开关。该库也可以正确处理增量编译。”
就我而言,什么也没有产生。 有人可以帮我吗?
从类HelloWorldPlugin
的代码片段中,不清楚哪个接口是“合同”。 在您提供的链接中:
如果您有多个接口和/或基本类型,则库无法推断合同类型。 在这种情况下,可以通过将合约类型赋予@MetaInfServices来显式指定合约类型。
因此,首先您必须确定要履行的合同,并且如果父类实现了多个合同,则需要在@MetaInfServices
批注中明确声明哪个@MetaInfServices
。
我认为这是要检查的第一件事。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.