Maven を使用して比較的 OSGi 標準的な方法でこれを行う方法を見つけました。maven-dependency-plugin を使用して、ランタイム スコープで必要な依存関係のみを含むリポジトリを作成します。
次に、maven-bundle-plugin:index ゴールが実行され、repository.xml ファイルが作成されます。
ターゲットのこの時点で、有効な obr リポジトリができました。必要に応じて maven-assembly-plugin を使用してパッケージ化できます。
次の pom.xml スニペットは、必要なことを行います。
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-runtime-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<copyPom>true</copyPom>
<useRepositoryLayout>true</useRepositoryLayout>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<executions>
<execution>
<id>index</id>
<goals>
<goal>index</goal>
</goals>
<phase>verify</phase>
<configuration>
<mavenRepository>${project.build.directory}/dependency</mavenRepository>
</configuration>
</execution>
</executions>
</plugin>
Karaf に関しては、次のコマンドを使用して、Karaf の feature.xml を使用せずに、このバンドルとその推移的な依存関係をインストールできます。
features:install obr
obr:addUrl [location of the OBR repository, can be file:///....]
obr:deploy [symbolicname-of-bundle]
start [symbolicname-of-bundle]
そして出来上がり。
これは、指定したバンドルによって参照されるバンドルのみをロードすることに注意してください。そのため、理論的には他のバンドルについて認識すべきではないブループリントのようなものを使用している場合は、それらを明示的に展開するか、あなたが持っているバンドル (機能/製品など) を含む uber バンドル