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

时间:2016-11-23 13:17:45

标签: osgi maven-bundle-plugin maven-scr-plugin

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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