2017-03-07 12 views
1

OSGIバンドルにサードパーティ製のライブラリに依存するバンドルがあります。そのバンドルをコンテナに展開したくないのでバンドルに埋め込みたいと思います。OSGIでの推移的な依存関係の埋め込み

もちろん、そのライブラリには独自の依存関係がありますが、私はそれらも組み込みたいのです。

私はMaven Bundle Pluginを使用しています:

<plugin> 
<groupId>org.apache.felix</groupId> 
<artifactId>maven-bundle-plugin</artifactId> 
    <configuration> 
    <instructions> 
     <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> 
     <Bundle-Description>${project.description}</Bundle-Description> 
     <Bundle-Vendor>${bundle.vendor}</Bundle-Vendor> 
     <Meta-Persistence>...</Meta-Persistence> 
     <Export-Package>...</Export-Package> 
     <Import-Package>...</Import-Package> 
     <Embed-Dependency>3rd-Party</Embed-Dependency>      
     <Embed-Transitive>true</Embed-Transitive> 
     </instructions> 
    </configuration> 
</plugin> 

を結果として<Embed-Transitive>true</Embed-Transitive>はどんな効果を持っていないかのように、3rd-Partyは、その推移的依存関係によるバンドルに埋め込まれていないが。

だから私はいくつかの質問

  • を持っているが、これは推移的な方法でサードパーティのライブラリを埋め込むための正しい方法は何ですか?
  • 生成されたマニフェストファイル(サードパーティのライブラリとその依存関係に属するパッケージをインポートしない)が処理されますか?

あなたに埋め込み、依存関係について

答えて

1

ありがとう:;scope=compile|runtime:あなたは、彼らはいつものようにスコープを使用felix docsを見ている場合。

多分、依存するバンドルの名前は与えられた正規表現に合っている必要があります。ほとんどのジャーを埋め込みたいのであれば、*を埋め込み、いくつかを除外することができます!

マニフェストについて:mavenバンドルプラグインは、組み込みパッケージにインポートを適合させる必要があります。したがって、埋め込まれたパッケージのインポートは行わないでください。

+0

ハローキリスト教、第三者のライブラリの正確な名前を指定する際に問題があると思いますか? – isco

+0

埋め込みパッケージのインポートに関しては、依存関係を埋め込むと、インポートされたパッケージのリストが非常に高速になります。プラグインはこれを処理しません。 – isco

+0

多くのライブラリの大きな問題は、依存関係。このようなライブラリを単純に埋め込むと、オプションのdepsも取得されます。そのような木は非常に速く成長することができます。これがあなたのためのケースであり、あなたがオプションのdepsのいくつかを必要としないことを知っているなら、あなたはそれらをmavenで除外しようとすることができます。 –

関連する問題