繁体   English   中英

Maven中不同模块之间的ServiceLoader和META-INF /服务生成器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM