2

私は 2 つのリアクター ビルドを持っています。

最初のものは、いくつかのバンドルとそれに応じた機能を構築します。成功した後clean install、機能は私のローカル Maven リポジトリにあります。Tycho は p2 メタ情報も生成しています...-p2artifacts.xmlそして...-p2metadata.xml

2 番目のビルドには、最初のリアクターでビルドされた機能を参照する機能ベースの製品が含まれています。Tycho を試すとclean install、未解決の機能 (他のリアクター ビルドの機能) について不平を言う。

目標 org.eclipse.tycho:tycho-p2-repository-plugin:0.12.0:assembly-repository [...] ["TestApp2 1.0.0 から my.testlib.feature.feature への依存関係を満たすことができません。グループ [1.0.0.201109081051]."]

ご覧のとおり、私は Tycho 0.12.0 を使用しpomDependencies=considerています。これは、フラグが設定されているときにローカルの Maven リポジトリのアーティファクトを解決できるはずです。

生成されたローカル Maven リポジトリの p2 メタ情報を調べたところ、機能バージョンに少し違いがあることがわかりました。p2artifacts.xml の機能のバージョンは次のとおりです。

バージョン='1.0.0.201109071453'

2 つのバージョンの比較

1.0.0.201109081051 // what tycho looks for
1.0.0.201109071453 // what's in my local mvn repo

タイムスタンプである可能性がある最後のビットにのみ違いがあります。

ティコが未解決の機能について不平を言っている理由を誰か知っていますか? タイムスタンプは重要ですか?

更新: 2 番目のビルドのタイムスタンプはビルドごとに変わるため、現在のタイムスタンプであると想定しています。

4

2 に答える 2

3

.productの機能を参照するときに、バージョンサフィックスとして「.qualifier」を使用している可能性があります。「.qualifier」はデフォルトでビルドタイムスタンプに置き換えられているため、これはおそらくあなたが望むものではありません。代わりに「0.0.0」(=最新)を使用してみてください。

于 2011-09-08T09:34:23.300 に答える
0

製品ファイルは1.0.0.qualifier、他のリアクターの機能への参照でバージョンを指定しているようです。

Tycho のバグ (バグ 373817 )qualifierにより、この場合、リテラルは正しいタイムスタンプに置き換えられません。ターゲットプラットフォーム。

Jan が既に指摘したように、この問題の回避策は0.0.0、機能への参照でバージョンを使用することです。

すべての「インクルージョン」参照 (つまり、機能はプラグインを「含む」、製品は機能を「含む」) と同様に、Tycho はそのバージョンをターゲット プラットフォームの実際のバージョンに置き換えます。(注: を使用した以前の Tycho ビルドのアーティファクトmvn clean install、自動的にターゲット プラットフォームの一部になります。)しかし、0.0.0これを使用すると、2 つのリアクターの場合でも正しく機能します。


参考までに:新しい Tycho バージョンでは、質問に記載されているセットアップの場合のエラー メッセージが異なります。

目標 org.eclipse.tycho:tycho-p2-publisher-plugin:0.22.0:publish-products (...) の実行に失敗しました: 製品の発行中に例外が発生しました (...)\test.product: 発行結果: [付属要素 my.testlib.feature.feature.group 1.0.0.201109081051 がありません。この要素に対する要件のフィルターを特定できません。]

このメッセージは同じ Tycho バグが原因で発生し、回避策も同じです。

于 2014-11-27T12:14:49.310 に答える