私は、Eclipse ベースのプロジェクトの Maven/Tycho ベースのビルドを担当しています。このプロジェクトは、実際には 2 つのサブプロジェクト Pa と Pb で構成されており、それぞれが別々にビルドされています。Pa には、p2 リポジトリにアセンブルされる多数の機能とプラグインが含まれています。Pb には、すべて Pa の機能に依存する、別の一連の機能と製品が含まれています。
問題は、Pb の機能と Pa の機能から Pb 製品をビルドしようとしたときに発生します。したがって、私の製品ファイルには次のような機能が含まれています。
<features>
<feature id="de.cau.cs.kieler.synccharts.feature" version="0.0.0"/>
<feature id="de.cau.cs.kieler.kaom.feature" version="0.0.0"/>
</features>
最初の機能はプロジェクト Pb からのものですが、2 番目の機能は Pa からのもので、p2 リポジトリからダウンロードするには Maven/Tycho が必要です。リポジトリは、親 pom.xml の次の定義によってビルド システムに認識されます。
<profiles>
<profile>
<id>juno42</id>
<properties>
<tycho-version>0.17.0</tycho-version>
<targetJdk>1.5</targetJdk>
</properties>
<repositories>
<repository>
<id>p2.pa</id>
<layout>p2</layout>
<url>repository_url_of_project_pa</url>
</repository>
</repositories>
</profile>
</profiles>
Pb をビルドしようとすると (以前に Pa をビルドし、上記で定義した URL で更新サイトを公開した後で)、次のようなエラー メッセージが表示されます。
[ERROR] Software being installed: de.cau.cs.kieler.product 0.8.0.qualifier
[ERROR] Missing requirement: de.cau.cs.kieler.kaom.feature.feature.group 0.6.0.201304190326 requires 'de.cau.cs.kieler.core.model.gmf [0.2.2.201304190326]' but it could not be found
[ERROR] Cannot satisfy dependency: de.cau.cs.kieler.product 0.8.0.qualifier depends on: de.cau.cs.kieler.kaom.feature.feature.group 0.0.0
Maven/Tycho は明らかに、最終製品に含まれる機能を Pa から見つけましたが、機能を構成するプラグインを見つけることができませんでした。プラグインが実際に Pa の p2 リポジトリに公開されていることと、必要なバージョンが一致していることを再確認しました。
見落としているものはありますか?Tycho は、機能が既に見つかっている場合、機能を構成するプラグインを見つけることができるべきではありませんか? この問題を解決するための助けをいただければ幸いです。:)
ちなみに、私たちのプロジェクトでは、Tycho は pom.xml ファイルで定義された依存関係ではなく、プラグインの MANIFEST.MF ファイルに基づいて依存関係を計算します。Tycho が 1 つのリアクター ビルドで 2 つを混在させることができないという問題に遭遇したとき、私はそれを確認しました。