-1

多くのRCPプラグインを備えた巨大なeclipse-rcpプロジェクト「A」があります。これらはすべて tycho によってマニフェストファーストで構築されています。別のプロジェクト「B」には、いくつかの OSGi バンドルがあります。

B からバンドルを依存関係として A のいくつかのプラグインに追加する必要があります。A プラグインの MANIFEST.MF に B バンドルを追加すると ("Require-Bundle: B.bundle1")、tycho は B.bundle1 を見つけられません ("Unable to A.plugin 1.0.0 からバンドル B.bundle1 0.0.0 への依存関係を満たします)。

pom 依存関係を使用するように tycho を構成できることはわかっています (B.bundle1 を考慮し、maven 依存関係として追加します)。Tycho はプロジェクト A をビルドできますが、A プラグインのすべてのマニフェストを無視し、新しいものを生成します。プロジェクト A が pom-first と見なされるようになりました。

OSGi バンドルをプラグインに追加し、プラグインのビルド マニフェストを最初に維持するにはどうすればよいですか?

4

2 に答える 2

1

Tycho は決して POM ファーストではありません。つまり、バンドル マニフェストを生成することはありません。ただし、ビルド中に (リテラルを置き換えるために) マニフェスト ソース ファイルを読み書きするため.qualifier、ビルド結果のマニフェストは元のマニフェストとは異なる形式になる場合があります。ただし、ソースと同等です。

マニフェスト ファイル形式の定義により、マニフェストの最後の行が改行文字で終了していない場合、その行は無視されることに注意してください。したがって、あなたのソースがそうである場合、Tycho がマニフェストからヘッダーを削除しているように見えるかもしれません。これは一種の真実ですが、ヘッダーが無効であり、OSGi ランタイムによって無視されるためです。

私の知る限り、最新の Tycho バージョンでは、ソース マニフェストの最後の行が適切に終了していない場合に警告が出力されます。

于 2013-09-23T12:59:08.083 に答える
0

Tycho は、P2 または Maven リポジトリーの 2 つの場所でバンドルを見つけることができます。

B バンドルが Maven リポジトリにある場合、Require-Bundle をマニフェストに追加しても、A の pom に依存関係を追加する必要があります。これは、完全にマニフェスト ファーストではないことを意味します。

ただし、依存関係 (プロジェクト B) が P2 リポジトリにある場合のみです。次に、マニフェストを設定するだけです (Import-Package は Require-Bundle より優れています)。

そのため、CI でジョブを作成してプロジェクト B のバンドルをビルドし、maven リポジトリにインストールする (mvn install) という方法もあります。または、p2 リポジトリを生成して HTTP サーバーにデプロイするジョブを作成します。

次に、生成された Maven リポジトリを使用するように tycho ビルドを適切に設定する必要がある A をビルドするジョブを作成します... ( http://wiki.eclipse.org/Tycho/Target_Platform#.22POM_dependencies_consider.22 ) または p2. ..

于 2013-09-20T03:37:01.937 に答える