問題タブ [maven-bundle-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven - Maven-Bundle-Plugin で Require-Capability をオーバーライドする
私の質問はこれに似ていますが、Maven バンドル プラグインを使用して同じ最終結果を達成しています。
persistence.xml
ファイルを含むバンドルを構築していますmaven-bundle-plugin
が、マニフェストに次のヘッダーが自動的に生成されることがわかりました。
これ自体は問題ではありませんが、私は Karaf を使用しており、これと他のバンドルと Karaf 機能を独自の 1 つの機能にデプロイしたいと考えています。これを行うと、同時にインストールosgi.service;effective:=active;objectClass=javax.persistence.spi.PersistenceProvider;javax.persistence.provider=org.apache.openjpa.persistence.PersistenceProviderImpl
する機能を指定しても、OSGi がその機能を実行できないために失敗します。に変更するopenjpa
ことでこの問題を回避できることを発見しましたeffective:=active
resolution:=optional
バンドルを構築するために、次の Maven プラグイン構成を試しました。
ただし、上記のリンクされた質問と同じ問題が発生します。つまり、マニフェストで要件が重複しています。
また、上記の質問のリンクから、bnd に変更が加えられたことがわかります (bnd issue #1364) が、これは注釈に対してのみ機能するように見えますか? 要件の重複を防ぐために Maven プラグインを構成する方法はありますか?
更新 #1
サンプル コードは GitHub (karaf_features ブランチ) で入手できます: https://github.com/jtkb/jpatest/tree/feature/karaf_features
simple
3 つのモジュールで構成されていますが、この問題で重要なのは 2 つだけです。simple-datasource
simple
は「持続性ユニット」であり、persistence.xml
. これは、「厄介な」(まだ実際の要件である) <Require-Capability>
ヘッダーが生成されるバンドルでもあります。
simple-datasource
持続性ユニットにデータソースを提供し、インストールするための Karaf 機能simple
、simple-datasource
バンドル、および必要なすべてのサードパーティ バンドルを (Karaf 機能経由で) 含みます。機能 XML には次が含まれます。
したがって、Karaf に機能をインストールすると、次のエラーが発生します。
コマンド実行エラー: ルートを解決できません: 要件がありません [root] osgi.identity; osgi.identity=単純なデータソース; タイプ=カラフ.機能; バージョン="[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT]"; filter:="(&(osgi.identity=simple-datasource)(type=karaf.feature)(version>=1.0.0.SNAPSHOT)(version<=1.0.0.SNAPSHOT))"
[原因: simple-datasource/1.0.0.SNAPSHOT を解決できません: 要件がありません [simple-datasource/1.0.0.SNAPSHOT] osgi.identity; osgi.identity=com.javatechnics.jpa.simple; タイプ=osgi.bundle; バージョン="[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT]"; 解像度:=必須
[原因: com.javatechnics.jpa.simple/1.0.0.SNAPSHOT を解決できません: 要件がありません [com.javatechnics.jpa.simple/1.0.0.SNAPSHOT] osgi.service; objectClass=javax.persistence.spi.PersistenceProvider; javax.persistence.provider=org.apache.openjpa.persistence.PersistenceProviderImpl; 有効:=アクティブ]]
私にとってのエラーは、循環参照の問題のように感じますが、その方法がわかりません。
simple
バンドルのヘッダーを調べる: