使用 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) { }
}
我正在使用 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) { }
}