2016-05-10 7 views
0

下の私の例では、OSGiの解決とMavenの依存関係のサポートに必要な手順に不一致/重複があるようです。OSGi(Karaf)解決とMavenの依存関係

私は外部のサードパーティ製のjarファイル(この場合はtime4j)に依存するjarファイルを持っています。

<dependency> 
    <groupId>net.time4j</groupId> 
    <artifactId>time4j-core</artifactId> 
    <version>4.16</version> 
</dependency> 

私はその後のOSGiにインポートするとき、私は、このjarファイルは、多くの場合、PAXラップURLを使用して、最初にインポートされていることを確認する必要があり

などのパッケージをインポートして実行することにより、局部的に私の簡単なjarファイルを実行することができます。

これは1つのjarの依存関係では問題ありませんが、複数の依存関係が存在する場合はどうでしょうか。 features.xmlファイルを使用してこれらのjarファイルを収集できますが、なぜですか?私はすでにそれらをpom.xmlに指定しています。

OSGi/Karafがpom.xmlの依存関係を読み込み、必要に応じてPAX Wrap URLを使用してこれらをコンテナにインポートする方法があるようです。

ここに何か忘れましたか?

+0

ビルドタイムの​​みの依存関係はどうやって処理しますか? –

+0

付属のスコープを使用してください。 – IanWatson

+0

もう1つの状況は、他のサードパーティ製のjarファイルに依存するサードパーティ製のjarファイルがある場合です。このような状況では、サードパーティ製のjars依存関係をすべてトラバースして、機能ファイルを作成するか手動でインストールする必要があります。 – IanWatson

答えて

4

申し訳ありませんが、あなたの期待は現実と同期していません。 まずMavenの依存関係は、ビルド時の依存関係です。あなたが提供

<scope>provided</scope> 

のOSGiもKarafどちらがあなたのビルド時の依存関係については何も行うことができますよう、実行時に利用できるようにするために知っている依存関係を宣言した理由です。 OSGiを使用してをビルドすることで、実行時にビルドの依存関係を利用できるようになり、利用可能な他のライブラリを妨げないようにすることができます。あなたの輸出入を宣言する必要がある理由です

など

Karafは、機能ファイルと例の依存関係のいくつかのお手伝いを行います。 機能定義mavenプロジェクトをお持ちの場合、コンパイルコンパイルのすべてのスコープの依存関係を1つのフィーチャーファイルに含めることができます。

しかしは、OSGiのリゾルバは、現在入手可能なバンドルとより多くの何も見て、あなたがいることを確認する必要があり、外部依存関係の解決オートマジックのいくつかの並べ替えを持っているしたい場合はそう、これまで、Mavenのためにどのような接続がありません
a)OBRレゾルバを有効にしてください(使用しているkarafのバージョンに依存していますが、既に含まれています)。
b)OBRリポジトリを手元に置いて、Karaf Caveは探しているプロジェクトになりますその場合、それはMavenリポジトリの上にあるプロキシのように存在する可能性があります。

関連する問題