問題タブ [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.

0 投票する
2 に答える
2774 参照

maven - Maven ビルド jar: 依存関係から重複したリソースをマージする

私はこの問題を抱えています:

spring-boot を使用したプロジェクトがあります。Eclipse で完全に動作しますが、依存関係のある jar を生成する必要があるため、pom に maven-assembly-plugin 構成を追加します。

一部の春の依存関係には、META-INF に spring.schemas というファイルがあり、すべての spring.schemas を 1 つにマージする必要があります (spring-context、spring-beans など)。

maven-shade-pluggin と AppendingTransformer を使用してこのソリューションを試したところ、すべての spring.schemas が完全にマージされました...しかし、jar を実行すると次のように失敗するという問題があります。

したがって、shade プラグインは jar を圧縮しますが、spring-boot はそれを好まず、shade で圧縮をオフにする方法はありません。シェードによって生成されたシェード spring.schemas を手動でコピーし、それを maven-assembly-pluggin で生成された圧縮されていない jar に依存関係とともに配置します。できます。

次に、生成された spring.schemas をリソース フォルダーに含めようとしましたが、常に spring-context の spring.schemas によってオーバーライドされます。

アセンブリで記述子 XML を使用して依存関係 jar から spring.schemas を除外するために、この他のソリューションも試しましたが、機能しません。

これは私の依存関係です:

何か案は?前もって感謝します

0 投票する
3 に答える
7488 参照

java - OSGI バンドルの依存関係

SLF4J に依存するバンドルを作成したため、OSGI 実装に Logback を使用しています。これはすべてバンドルされ、正常にインストールされますが、バンドルを開始すると、次の例外が発生します。

org.osgi.framework.BundleException: com.felix.test [20](R 20.0) を解決できません: 要件がありません [com.felix.test [20](R 20.0)] osgi.wiring.package; (osgi.wiring.package=groovy.lang) 未解決の要件: [[com.felix.test [20](R 20.0)] osgi.wiring.package; (osgi.wiring.package=groovy.lang)]

私のマニフェストファイルgroovy.langにリストされていることがわかりますImport-Package.Logbackが埋め込まれているが、その参照が埋め込まれていないことが問題であると確信しています。

バンドルの作成に使用しています。構成は次のとおりです。

これが私のマニフェストです:

私はそれを正しい方法で行っていますか、それともより良い方法がありますか?

ありがとうございました!

0 投票する
2 に答える
94 参照

google-maps - MANIFEST.MF の Import-Package に Google マップのクラスが表示されない

を使用してmaven-bundle-pluginおり、Google マップの依存関係をバンドルしようとしています。

JAR (Manifest.MF) を調べると、 では表示されますが、 では表示com.google.maps.modelされExport-PackageませんImport-Package。どうすればそれを手に入れることができImport-Packageますか?

この質問は、OSGi コンポーネントでサードパーティの jar ファイルからクラスをインポートする方法に関する未解決の質問にリンクされています。

0 投票する
2 に答える
316 参照

osgi - Maven バンドル プラグイン R6 メタタイプ

maven-bundle-pluginを使用して、osgi r6 メタタイプ アノテーションを使用してバンドルを構築しようとしています。

構成クラスを作成しました

コンポーネントクラスで使用しています。

しかし、ビルドすると、生成されたメタタイプ ファイルが正しく表示されず、config admin に読み込まれません。これが生成されたものです(指定セクションがありません)

これは私のpomのバンドルプラグインです

私は主にこの男の欲求不満を通してここまで来ました https://github.com/bndtools/bnd/issues/1030

https://groups.google.com/forum/#!msg/bndtools-users/_F0Nr8b7rlQ/2A9x660pAgAJ

0 投票する
1 に答える
86 参照

apache-felix - 特定の jar からクラス ファイルをロード/スキャンしない

埋め込まれた jar に含まれるクラスを完全に無視するように maven-bundle-plugin (bnd を使用) を構成する方法を知りたいです。

バックグラウンド

私は、コードが実行されている環境が単一の会社 (すべてのツールを含む) によって定義されている、制御された環境で作業しています。コードは Java で、OSGi を使用してモジュールの依存関係を定義します。

提供されたモジュールの一部には、無効なクラス ファイルのように見えるものが含まれています。システムがこれらのクラス ファイルを任意のタイプの JVM にロードしようとする前に、これらのクラス ファイルを「修正」すると想定することしかできません。いずれにせよ、これらのクラス ファイルは、ターゲット システムにデプロイされたときに機能します。

システムが理解できるパッケージを生成できる Maven に基づくビルド システムを作成しようとしていますが、これらの無効なクラス ファイルが BND によって (apache-felix を介して) 読み取られ、エラーが発生するという問題が発生しました。

これらのクラス ファイルを含む jar をバンドルのクラス パスに配置する方法が必要ですが、含まれている.classファイルは bnd によって読み取られたり処理されたりしません。エラーを単に無視して続行することで解決できますが、ビルド フェーズ全体をフェリックスが中止しない限り、それを行う方法を見つけることができません。

0 投票する
1 に答える
80 参照

osgi - OSGi フラグメント バンドル ヘッダーのマージ

フラグメント バンドルを作成し、maven-bundle-plugin インストラクションの下に新しいヘッダー エントリを追加するとします。その新しいエントリは、実行時にホスト バンドル ヘッダー リストとマージされますか?.

0 投票する
2 に答える
441 参照

java - 宣言型サービスを使用して複数のサービス インスタンスを管理する方法は?

特定の形式のファイルを読み取る OSGi でサービスを構築しようとしています。

サービス インターフェイスは次のようになります。

Data オブジェクトは、読み取るファイルのデータ構造を定義するクラスです (同じ種類のデータが含まれているはずです)。

アイデアは、次のようなさまざまなサービスの実装を持つことです。

XmlFileReader、MdFileReader など、他の実装もある可能性があります。

最後に、次のような FileReaderFactory が必要です。

私が望むのは、DS が FileReaderServices をファクトリ リストに動的に挿入することです。提供されるサービスの数に応じて、特定のファイル形式をサポートする (またはサポートしない) ことになります。

したがって、私の質問は次のとおりです。

1) これは DS で実行可能ですか?

2) はいの場合、DS 注釈を使用してそれを行うにはどうすればよいですか?

3) そうでない場合、どのようにしますか?

ありがとう

編集:クリスチャンの解決策を試しましたが、うまくいきませんでした(まだ)。完全なコードは、 https ://github.com/neopium/FileReader からダウンロードできます。

0 投票する
1 に答える
562 参照

maven - DS と maven-bundle-plugin を使用してマニフェストを生成する適切な方法は何ですか?

私は今日、プロジェクトのマニフェストを生成するために maven-bundle-plugin を使用しています。他の制約により、私のモジュールは「jar」パッケージを使用しています (「バンドル」パッケージは使用できません)。現在、私の pom は次のようになっています。

注釈付きコンポーネントから 'Service-Component' ヘッダーと DS xml 記述子を生成したいのですが、" <_dsannotations>*</_dsannotations>" を追加してもうまくいきません:

  1. Service-Component ヘッダーは正しく生成されますが、xml が jar に存在しません
  2. クリーンなゴールなしで Maven プロジェクトを再構築すると、「Service-Component」ヘッダーに重複した参照が含まれます: コードを掘り下げた後、プラグインは target/classes/META-INF/MANIFEST.MF から生成された古いマニフェストを使用してマージします新しく生成されたものと一緒に。次に、「Service-Component」が連結されます

では、これが機能するように pom を構成するにはどうすればよいですか? 今のところ、「unpackBundle」オプション (バンドルに xml を含めるため) と空の src/main/resource/MANIFEST.MF (古いマニフェストのマージをバイパスするため) を使用します。 -)

さらに、「bnd-maven-plugin」は意図したとおりに機能しますが、親 pom の「グローバル構成」、Bundle-SymbolicName または Bundle-Name の生成として、maven との統合が軽すぎる (または文書化されていない) 可能性があります。など

ありがとう!

0 投票する
2 に答える
1659 参照

osgi - 依存関係を解決する際に、競合するバンドルを OSGI バンドルに強制的に無視させる方法

AEM 5.6.1 を使用しています。コンソールに jax-b api 2.2.12 を手動でインストールすると、バンドルの JAXB で例外が発生します。JAX-b(2.1.0) は、以下のバンドルによって AEM の内部で既に提供されているためです。2.2.12 が存在しない場合、この例外は発生しません。また、私のバンドルの後に jax-b 2.2.12 がインストールされていれば、まったく問題ありません。

ただし、この新しいバージョンは、別のベンダーが開発した別のバンドルで使用されています。したがって、この新しいバンドルを Felix コンソールから削除することはできません。

オリジナルの JAX-B 2.1.0 を提供するシステムバンドル

maven pom を使用した構成によって、バンドルに jax-b 2.2.12 の検索を無視させ、システムのデフォルト 2.1.0 バージョンのみを取得させるにはどうすればよいか考えていました。具体的には、POM の Maven バンドル プラグインで。

私の ABC クラスでメソッドをアクティブにします。

現在のバンドル プラグイン インポート パッケージの定義:

例外:

どんな助けでも本当に感謝しています。