12

以前は、バンドルと機能をファイル システムに配置し、「ディレクトリ」の場所を指定したターゲット定義ファイルを介して Eclipse で利用できるようにしていました。このように、Eclipse のエクスポート ウィザードで簡単に使用できました。

eclipse-plugin現在、サードパーティの依存関係を持つ Tycho をビルドしようとしています (例: javax.vecmathおよびorg.apache.commons.math ) 。

私の知る限り、Tycho ビルドで依存関係を取得する最良の方法は、p2 リポジトリを使用することです。そのため、Eclipse バンドル用に 1 つを使用しています。しかし、私のサードパーティ バンドルでは、利用可能な p2 リポジトリがないようです。

私の質問は次のとおりです。JAR (vecmath、commons-math) を p2 リポジトリに簡単に取得するにはどうすればよいですか?

Tycho で p2 リポジトリを構築できると思っていましたが、Tycho でサードパーティのバンドルにアクセスできない場合、どうすればよいですか? ターゲット定義を使用しようとしましたが、Tycho は p2 リポジトリへのリンクのみをサポートし、ディレクトリやインストールはサポートしていません。Maven/Tycho ビルドでサードパーティの依存関係を使用する他の方法はありますか?

4

4 に答える 4

12

いくつかの異なるオプション...

P2 プラグイン

p2-maven-pluginを使用して、OSGi 以外のすべての依存関係をバンドルにラップし、p2 リポジトリを作成します。

p2-maven-plugin は試していません (現在のプロジェクトをセットアップしていたときには存在しませんでした)。その実装は tycho に基づいていますが、単に tycho プラグインを単独で使用するよりも、問題を解決するためのより便利な方法を提供することがわかるかもしれません。

バンドルプラグイン

maven-bundle-pluginを使用して OSGi 以外の依存関係をラップし(依存関係ごとに 1 つのラッパー pom)、それをリポジトリにインストールします。commons-math は既に依存関係にあると思うので、vecmath をラップする必要があるかもしれません。<dependencies>次に、これらの依存関係をtycho ベースの pom ファイルにリストできます。

このアプローチには、プロジェクトをビルドするためだけに p2 リポジトリをセットアップする必要がないという利点があります。欠点は、バンドル プロジェクトの依存関係を管理するために、MANIFEST.MF ファイルを変更するだけでは済まないことです。pom も更新する必要がある場合があります。

バンドル プラグインと Tycho

バンドル プラグインアプローチを使用して依存関係を OSGi バンドルにラップする場合でも、これらの依存関係用に p2 リポジトリを設定すると便利な場合があります。これにより、Eclipse PDE でのターゲット プラットフォームの設定が簡単になるからです。

これを行うには、新しい tycho ベースのプロジェクトを作成して、依存関係を p2 リポジトリに収集します。つまり、既にバンドルされている依存関係と、非 OSGi 依存関係のラップされたバージョンを一緒に収集します。このようにして、p2 リポジトリを作成するプロジェクトはラップされた依存関係をその pom にリストし、バンドル プロジェクトは p2 リポジトリをそれらの pom に依存関係をリストせずに使用できます。

これが私が使用しているアプローチです。具体的には、eclipse-featureプロジェクトを使用して、すべてのサードパーティの依存関係を含む基本機能を定義しています。また<deployableFeature>、パッケージ プラグインの構成オプションを に設定してtrue、ターゲット ディレクトリに p2 リポジトリを作成します。この機能は、私の通常の Eclipse インスタンスにインストールできるため、現在の Eclipse プラットフォームをターゲット プラットフォームとして簡単に使用できます。また、tycho ビルドの他の場所 (つまり、私のコード) で使用できる p2 リポジトリとして、または Eclipse.targetファイルのリポジトリとして使用することもできます。

Tycho 0.13.0 では、これeclipse-featureが最適なパッケージ タイプであると思われました。最近のバージョンでは、より適切なパッケージ タイプがある場合があります。

于 2012-11-07T11:17:34.580 に答える
2

p2 リポジトリでサードパーティのバンドル jar を探すのに適した場所は、Eclipse Orbit です。

http://download.eclipse.org/tools/orbit/downloads/

commons.math はそこにあります。

サードパーティの OSGi バンドルが p2 リポジトリでは利用できないが、次のような Maven リポジトリでは利用できない場合

http://search.maven.org/

tycho の pomDependency=conside スイッチを使用できます。

http://wiki.eclipse.org/Tycho/How_Tos/Dependency_on_pom-first_artifacts

于 2012-11-07T15:17:20.473 に答える
0

これを行う方法の実際の例を次に示します: https://github.com/skosmalla/generate-p2-repository-from-maven-artifacts

于 2014-03-25T06:29:04.767 に答える
0

あなたの質問によると、サードパーティの依存関係は既にバンドルされています。これで問題ありません。後は、バンドルの p2 メタデータを生成するだけです。

これは、 Features and Bundles Publisher アプリケーションを使用して簡単に実行できます。結果は p2 リポジトリです。当然のことながら、Tycho ビルドを実行するためにすべての開発者がローカルでこれを行う必要はありません。そのため、パブリッシャー アプリケーションの結果を Web サーバーに配置する必要があります。次に、プロジェクトのターゲット ファイルで http URL を介してバンドルを参照します。

于 2012-11-07T12:05:10.890 に答える