私は別のチームによってMavenを使って構築されたOSGiバンドルを持っています。 POMファイルはパッケージングを「バンドル」と宣言し、Apache Felixプラグインを使用します。deploy:deploy-fileを使用してOSGiバンドルをMavenレポにデプロイするには?
私たちの内部プロジェクトで使用できるように、このアーティファクトをローカルのMavenリポジトリ(Nexus)に展開する必要があります。
deploy:deploy-file
ターゲットを使用して、標準のJARファイルと同じようにバンドルをリポジトリにデプロイしました。これはエラーなく動作します。私は、バンドルから埋め込まれたPOMを抽出して、コマンドラインでそれを渡されたので、コマンドラインは:
mvn deploy:deploy-file -Dfile=3rdpartybundle.jar -DpomFile=pom.xml -DrepositoryId=internal -Durl=http://internalserver/nexus
問題は、私はこのようにそれを展開するときに、パッケージをバンドルするために設定されていることで、結果として、リポジトリ内の成果物の名前は.jar拡張子の代わりに.bundle拡張子で終わります。
ここでは、それを依存関係として宣言する方法を理解できません。私たちはこのようにそれを宣言する場合:
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>bundle</type>
</dependency>
私たちは、依存関係が解決できないというエラーを取得します。興味深いのは、エラーメッセージのGAV座標は、実際には「バンドル」として設定しても、依存関係の型の値として「jar」を持つということです。
我々は、依存関係を変更した場合:
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>jar</type>
</dependency>
我々はまったく同じ未解決の依存関係のエラーが発生します。
Mavenリポジトリにバンドルとしてパッケージ化された成果物を、別のプロジェクトのコンパイル時依存として使用するにはどうしたらよいでしょうか?
おかげ
「ローカルリポジトリ」という用語を使用するのはわかりにくいかもしれません。リモートサーバー上のNexusリポジトリに展開しようとしています。サーバーは、チームの全員が共有します。私が「地元」と言ったとき、私は「私たちのLAN上のファイアウォールの中にあった」と思いました。 –