2012-03-29 15 views
13

私は、OSGiバンドルを私のプロジェクトの依存関係として宣言しました。 (ちょうどフェリックスコンテナになります。)なぜmavenはosgiバンドルの依存関係を見つけることができませんか?

<dependency> 
    <groupId>org.apache.felix</groupId> 
    <artifactId>org.apache.felix.framework</artifactId> 
    <version>4.0.2</version> 
    <type>bundle</type> 
    <scope>compile</scope> 
</dependency> 

ビルドしようとすると、見つからないと言われます。

[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Failed to resolve artifact. 

Missing: 
---------- 
1) org.apache.felix:org.apache.felix.framework:bundle:4.0.2 

    Try downloading the file manually from the project website. 

しかし、中央のクイックルックでは、このアーティファクトが実際に存在することが確認されます。私はそれを「jar」タイプに変更すると、本当にjarファイル(bundle)がダウンロードされることに気付きました。それで、なぜ私はそれを最初にバンドルと呼んだのですか?私がm2eを使ってアーティファクトをルックアップするとき、それを「バンドル」と呼んだので、私はそれをしました。実際、m2eは上記の座標を生成しました。

バンドルは有効なmavenアーティファクトタイプではありませんか?そうでなければ、m2eはそれをなぜ呼びますか?

+0

この質問をチェックしてくださいhttp://stackoverflow.com/questions/5389691/what-is-the-meaning-of-type-bundle-in- a-maven-dependency – jordeu

+0

ありがとうございます。しかし、この記事では、単に "バンドル"はosgiバンドルだと言います。そんなこと知ってる。なぜmavenがアーティファクトを解決できないように見えるのかと心配しています。 – chad

答えて

24

これは、受け入れられた回答に記載されているように、m2eの不具合ではありません。問題は、mavenが型 "束"が何であるかを知らないことです。だから、それを定義するプラグイン、つまりmaven-bundle-pluginを追加する必要があります。また、拡張子プロパティをtrueに設定する必要があることに注意してください。だから、POMは受け入れ答えに問題がタイプバンドルの依存性が直接依存関係であれば、それは動作することである

<plugin> 
     <groupId>org.apache.felix</groupId> 
     <artifactId>maven-bundle-plugin</artifactId> 
     <version>2.4.0</version> 
     <extensions>true</extensions> 
</plugin> 

のようなものを持っている必要があります。宣言するのはあなたのpomなので、型を削除するだけで済みます。しかし、あなたの依存関係自体がタイプbundleの依存関係を持っているならば、あなたの推移的依存関係の1つはバンドルタイプであり、あなたがそのアーティファクトの所有者ではないのでそのタイプを削除できないので、あなたの現在の実行が理解できないpomへのアクセス権があります。それは検索しようとしますrepo/your-dependency.bundle

依存関係のプラグインからコピー依存関係を使用するときにこの問題が発生しました。その場合、プラグインの依存関係はプラグイン自体に入っていなければなりません。あなただけのバンドルプラグインを知って依存関係のプラグインが必要になります。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <version>2.4.0</version> 
      <type>maven-plugin</type> 

     </dependency> 
    </dependencies> 
    <extensions>true</extensions> 
</plugin> 
+4

これは本当に受け入れられる答えでなければなりません。 – JBT

関連する問題