我的包定义了一个接口,以及一个使用该接口实现来调用它们的组件(如果存在一些......)。
一个很好的类比是 LogService;如果存在一个(或多个),则使用消息调用它们。
这是我的 DS 声明:
@Reference(cardinality= ReferenceCardinality.MULTIPLE,
policy = ReferencePolicy.DYNAMIC,
service = ITestResultsParserService.class)
public void bindTestResultsParser(ITestResultsParserService parser) {
testResultsParserServices.add(parser);
}
public void unbindTestResultsParser(ITestResultsParserService parser) {
testResultsParserServices.remove(parser);
}
所以我希望我的包能够在有或没有该服务实现的情况下进行部署。
然而,这就是日食给我的:
为什么?这根本不是要求!这显然是可选的。
我发现这张票似乎在谈论这个问题,但不清楚为什么它被关闭了。如票证中所述,我将此添加到我的 bnd.bnd 中:
-resolve.effective: 活跃;skip:="osgi.service"