0

コンポーネントとメタタイプの説明を生成するために maven-scr-plugin を使用しています。org.apache.felix.scr アノテーションから org.osgi.service.component アノテーションに移行しています。

Carsten Ziegeler は、この移行の方法について優れたブログをここに書いています。ただし、メタタイプの説明をコンポーネントの注釈から直接生成する方法については説明していません。代わりに、コンポーネントごとに個別の構成 @interface を作成し、すべてのコンポーネント アクティベーターを書き直す必要があります (少なくとも、追加の @interface クラスの付加価値を利用するには)。

への依存関係を追加することで、引き続き maven-scr-plugin を使用して osgi アノテーションを処理できますorg.apache.felix.scr.ds-annotations。ただし、maven-scr-plugin は、メタタイプ情報が明示的にオンになっている場合にのみ出力します。felix アノテーションを使用すると、メタタイプの生成を有効にするためにアノテーションの専用パラメーターmetatype=trueを使用できます。ただし、そのようなパラメーターは、アノテーション@Componentの OSGi バージョンでは使用できません。@Component

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 に答える