maven中不同模块之间的ServiceLoader和META-INF / services生成器?

时间:2017-06-03 15:09:09

标签: java eclipse maven meta-inf serviceloader

我想在maven项目中使用不同模块之间的服务ServiceLoader。我有一个名为iMage的父模块。在父模块中有一个名为jmjrst.main的模块,它有一个名为' JmjrstPlugin'的公共抽象类。

然后还有另一个名为prizm-plugin的模块,其中包含以下类: 公共类HelloWorldPlugin扩展了JmjrstPlugin {...}。我添加了jmjrst.main作为prizm-plugin的依赖项,反之亦然。

为了使用ServiceLoader,我想使用META-INF/services generator。 我将以下行添加到prizm-plugin的pom.xml中:

$res = $leadsquared->create_lead($data);
print_r($res);

类HelloWorldPlugin就是这样开始的:

<dependency>
  <groupId>org.kohsuke.metainf-services</groupId>
  <artifactId>metainf-services</artifactId>
  <version>1.1</version>
  <optional>true</optional>
</dependency>

META-INF/services generator上的网站上:&#34;在JavaSE6中使用javac时,会自动生成META-INF / services / *文件。不需要额外的编译器开关。该库也正确处理增量编译。&#34;

在我的情况下,没有生成任何内容。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

从您的班级HelloWorldPlugin的代码段中,不清楚哪个界面是“合同”。在您提供的链接中:

  

如果您有多个接口和/或基本类型,则库无法推断合同类型。在这种情况下,通过将合约类型提供给@MetaInfServices ..

来明确指定合同类型

首先,您必须确定要实现的合同,如果父类实现了多个,那么您需要明确说明@MetaInfServices注释中的哪一个。

这是我想的第一件事。