問題タブ [bnd]

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 投票する
1 に答える
1310 参照

apache - bnd はインポート パッケージに適用するバージョン範囲をどのように決定しますか?

パッケージタイプを変更せずにOSGiメタデータを既存のプロジェクトに追加するで説明されているように、maven warプラグインを使用して戦争を構築し、bndプラグインを使用してそれをオーバーレイするという問題があります。 このプロジェクトは、次の依存関係を定義します。

ビルドを実行すると、MANIFEST.MF に次のエントリが生成されます

バージョンを 1.13 以降に変更するとすぐに、Import-Package エントリは次のようになります。

私のターゲットにはjavax.ws.rs.javax.ws.rs-api_2.0.0.m16が含まれているため、これは私にとって本当の問題になります。これにより、バージョンが不要な場合のインポートが解決されますが、範囲制限がある場合はインポートが停止します。

だから、私の一般的な質問は: bnd はそのバージョン範囲をどのように決定するのですか? 2 つのマイナー リリース間で、バージョン制限なしからその特定の範囲に移行するために何かが変更されたため、bnd がその決定を行う方法を理解することは、この特定の問題が何であるかを発見するのに役立つと思います。

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

osgi - 実行時の依存関係に Import-Package 命令を追加する方法は?

Gradle を使用して OSGi jar を作成していますが、マニフェストに少し問題があります。これが私のビルドスクリプトからの抜粋です:

上記を使用して、Gradle は依存関係を検出Import-Packageし、コンパイル時のすべての依存関係と共に を追加します。しかし、私のアプリケーションにもランタイム依存関係があるとorg.springframework.ormしたら、それを Gradle に引数として含めるように指示するにはどうすればよいImport-Packageでしょうか?

上記のコメント化された行のコメント化を解除すると、生成されたImport-Package命令はのみ org.springframework.ormを指定します。OsgiManifestのGradleドキュメントには次のように記載されているため、これは私を混乱させます

OsgiManifest instruction(String name, String... values)

命令に引数を追加します。命令が存在しない場合は、作成されます。存在する場合、引数は既存の引数に追加されます。

Import-Packageただし、これは自動検出された引数には適用されないようです。などを指定instruction 'Import-Package', 'my.dependency.1'して途中で出力すると、順番に追加されていく様子が分かり、生成されたマニフェストに全て表示されるのですが、GradleのOSGiプラグインは手動で指定jar.manifest.instructionsすると自動検出された引数を追加しないようですImport-Package.

TL;DR:

  • 命令を手動で指定しない場合Import-Package、コンパイル時の依存関係はすべて自動生成されますが、実行時の依存関係は含まれません。
  • 私が行う場合manifest { instruction 'Import-Package', 'org.springframework.orm' }、コンパイル時の依存関係は自動的に含まれません。

に追加できるように、ランタイムの依存関係を Gradle に伝えるにはどうすればよいImport-Packageですか?

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

osgi - メソッド本体内でのみ使用されるパッケージに、bnd が uses ディレクティブを追加するのはなぜですか?

ここに完全にリストされている単一のソースファイルを含むプロジェクトがあります。

機能は質問とは無関係です。Gradle を使用してプロジェクトを OSGi バンドルとしてビルドすると、マニフェストに次の命令が含まれます。

私を当惑させるのは、そのuses指示です。私がディレクティブを理解しているように、このエクスポートされたパッケージをインポートする他のバンドルに伝播する必要がある他のパッケージへの依存関係を定義することを意図しています - たとえば、私のクラス定義またはメソッド署名がorg.apache.commons.elパッケージ内のクラスを参照している場合。しかし、このクラスでは、への依存関係はメソッドの本体org.apache.commons.elに完全に含まれています。これは API で公開されておらず、他のバンドル インポートはメソッドで作成されたインスタンスを取得できませんでした。したがって、依存関係を伝播する必要はありませんよね?com.acme.elExpressionEvaluatorImpl

usesディレクティブの意味を誤解しましたか、それともここで使用する必要はありませんか?

Eclipse で Gradle プロジェクトとしてクローンおよびインポートできる再現用の最小限のサンプル GitHub リポジトリを作成しました。

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

maven - maven-bundle-plugin から bnd ディレクティブを使用するには?

maven-bundle-plugin から bnd ディレクティブ命令を使用するにはどうすればよいですか? bnd ディレクティブが「-」文字で始まっています。これは無効な xml タグです:

maven-bundle-plugin の公式ページを確認したところ、「-」文字でも開始する必要があるとのことでした。

ディレクティブ - 「-」文字で始まる命令は、BND に特別な処理を実行するように通知するディレクティブと見なされ、マニフェストにコピーされません。

バンドルの目標の説明にもこの情報がないようです。いくつかの特別な処理を実行し、マニフェストにコピーされません。

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

scala - sbt-osgi が MANIFEST.MF に Include-Resource ディレクティブを追加するのはなぜですか?

OSGI バンドル ( sbt-osgiプラグインを使用) を生成するように ( 経由で) sbtプロジェクトを構成しています。build.sbt

なんらかの理由で、生成されたには、ビルド ディレクトリ内の (完全に空の) "resource" サブディレクトリ (具体的にはおよび) を指すディレクティブMANIFEST.MFが含まれています。アーティファクトがホーム ディレクトリ内の場所を指している必要はありません)。Include-Resourcesrc/main/resourcestarget/scala_2.10/resource_managed/main

sbt-osgiがこれを行うのはなぜですか?さらに重要なのは、どうすれば停止させることができるのでしょうか?

build.sbtはここにあります:https://github.com/reggert/reb4s/blob/1cd91fb82aa978b2f202c618ca6403a66c15f8d7/build.sbt

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

java - マップする Java 文字列。それを行うための最良の方法

こんにちは、解決できない問題があります。A は jar マニフェストから String の形式でパッケージをエクスポートしました。キーがパッケージの名前で、残りの情報がvalueの Map に入れたいと思います。それは簡単なことだと言うでしょうが、私が何をしたいのかを正確に示しましょう。私は文字列を持っています。

キーのコンマ(、)で分割すると、ピースが間違ってしまいます。

uses句では、依存パックの名前もカンマで区切ります。したがって、上記の行は次のように出力マップに含まれている必要があります。

それでは、私の仕事をするためにどの文字列メソッドまたは正規表現を使用すればよいでしょうか?

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

osgi - OBRリポジトリの「リソース」要素で追加の属性を取得するには?

現在のBND Tools / Bindexによって生成された OBR リポジトリで動作するApache Felix Web Console OBR プラグインを取得しようとしています。

問題は、生成されたリポジトリ (たとえば、Eclipse の「リリース バンドル」で生成されたもの) を Felix Web プラグインで読み取ることができないことです。

逆に、Felix 自身の OBR リポジトリはプラグインによって適切に認識されます。これは、"resource" 要素内に追加の属性があるように見えるためです。これは、リポジトリにはありません。

http://www.osgi.org/download/rfc-0112_BundleRepository.pdfのスキーマ仕様では、「リソース」XML 要素内に属性の余地がありますが、それらは Java API の一部として定義されています。

この gitHub フォークはhttps://github.com/rkrzewski/bindexの仕事をしているようですが、これの状態を知っている人はいますか? これはいつか Bindex に統合されますか? 更新: このフォークの所有者である Rafał からの回答は次のとおりですhttps://github.com/rkrzewski/bindex/issues/3#issuecomment-27784279 それで、bndtools-users の Google グループで再質問しました: https://groups. google.com/forum/#!topic/bndtools-users/ZdY0ASnLNmc

または、不足しているリソース属性を使用して OBR リポジトリを生成する他の方法はありますか? ありがとう。