0

我正在使用 maven-scr-plugin 生成组件和元类型描述。我正在从 org.apache.felix.scr 注释迁移到 org.osgi.service.component 注释。

Carsten Ziegeler 在这里写了一篇关于如何进行迁移的优秀博客。但是,这并没有解释如何从组件注释中直接生成元类型描述。相反,我必须为每个组件单独配置@interface,并重写所有组件激活器(至少,利用那些额外的@interface 类的附加值)。

我仍然可以使用 maven-scr-plugin 通过添加对org.apache.felix.scr.ds-annotations. 但是,maven-scr-plugin 仅在显式打开时输出元类型信息。使用 felix 注释,注释中的专用参数metatype=true@Component用于启用元类型生成。@Component但是,这样的参数在 OSGi 版本的注解中不可用。

有没有办法强制 maven-scr-plugin 生成元类型描述,或者我可以让 maven-bundle-plugin(或 bndtools)基于 osgi @Component 注释生成元类型数据,而不必定义一个每个组件的专用配置类?

4

2 回答 2

1

使用注解时会生成元类型@Designate。(至少在 bnd 实现中。)

 @Designate( ocd=Config.class, factory=true )
 @Component
 public class SomeComponent {
    @ObjectClassDefinition
    @interface Config {
       int port();
    }
    @Activate
    void activate( Config config) { }
 }
于 2016-11-23T14:44:48.280 回答
0

据我所知,您需要为每个组件单独配置@interface。也不可能从 @Component 注释生成元类型,因为它们不描述配置。

于 2016-11-23T13:44:53.713 回答