我正在使用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注释的元类型数据,而不是为每个组件定义一个专用的配置类?
答案 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注释生成元类型,因为它们不描述配置。