使用 maven-scr-plugin 和 OSGI R6 注释生成元类型描述

Generate metatype descriptions with maven-scr-plugin and OSGI R6 annotations

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

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

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

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

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

当您使用 @Designate 注释时会生成元类型。 (至少在 bnd 实现中是这样。)

 @Designate( ocd=Config.class, factory=true )
 @Component
 public class SomeComponent {
    @ObjectClassDefinition
    @interface Config {
       int port();
    }
    @Activate
    void activate( Config config) { }
 }