3

EclipseプロジェクトがMavenベースであるEclipseベースのセットアップを作成しようとしています。したがって、Eclipseが使用されているかどうかに関係なく、すべてMavenで動作するはずです。

さまざまなEclipseプロジェクトライブラリに依存していますが、さらに追加する必要があります。p2リポジトリーを使用したいのですが、次の例に従ってEclipse EMFライブラリーをプルしてjarに変換することができました。通常のMavenビルドでEclipsep2リポジトリーからの依存関係を使用しますか?

問題は、プロセスを合理化する方法が見つからなかったことです。他のプロジェクトで参照できるように、上記の質問からローカルのMavenリポジトリに再パッケージ化された依存関係を手動でインストールする必要があります。p2リポジトリからのアーティファクトをMavenベースのセットアップにシームレスに統合したいと思います。m4eは私が探しているスムーズなソリューションのようには見えません:理想的には、単純なmvnクリーンインストールに応答してすべてを実行するディレクトリのセットを配布したいと思います:p2リポジトリからライブラリをプルし、Mavenリポジトリから他のライブラリをプルします等..

これはMavenとTychoの統合を介して実行できますか?

更新:まず、質問の明確化:P2リポジトリーを参照できるだけでは、この参照を別のプロジェクトから使用する必要があるシナリオには役立ちません。P2リポジトリから参照されるライブラリ(または複数のライブラリ)は、他のMavenプロジェクトから参照できるように、jarとして再パッケージ化する必要があります。参照された質問はパッケージングを行います。ただし、この再パッケージ化された出力(アセンブリ)を他のプロジェクトからどのように使用できるかについては説明していません。私の場合、これは集約POMからアセンブリを参照し、P2リポジトリオリジンでライブラリを使用するすべてのプロジェクトのPOMを継承していることがわかりました。

4

2 に答える 2

5

Tychoプロジェクトは、p2リポジトリーとMavenリポジトリーの両方から依存関係を引き出すことができます(この関連する回答を参照してください)。これは、OSGiランタイム用にビルドしていない場合でも、解決策になる可能性があります。ほとんどのOSGiバンドルは、クラスパス上で「プレーン」JARとしても機能します。

制限事項:Mavenリポジトリーから参照されるアーティファクトもOSGiバンドルである必要があるため、Tychoはそれらを依存関係の解決と見なします。そうでない場合(そしてOSGiバンドルである代替品が見つからない場合)、Tychoの依存関係解決をプレーンなMavenプラグインと組み合わせることができるかもしれません:

  • Tychoのパッケージタイプ(例)の1つを使用し、パッケージタイプ(例)eclipse-featureのファイル形式でp2アーティファクトへの依存関係を指定します。feature.xml
  • さらに、POMでプレーンなMavenの目標を構成します。Tychoは実行時にOSGi/p2依存関係をMavenモデルに注入するため、たとえば、maven-compiler-plugin:compile呼び出しはMaven依存関係とp2依存関係の両方を参照します。
于 2012-09-03T08:17:27.013 に答える
2

解決策は、Mavenでマルチモジュールセットアップを作成し、EMFライブラリの再パッケージ化の出力への依存関係を宣言することです(私が参照した質問から)すべてのプロジェクトの親pomには次のものがあります:

    <dependencies>
    <dependency>
        <groupId>com.mymodule</groupId>
        <artifactId>myartifact</artifactId>
        <version>0.0.1</version>
        <classifier>repackaged</classifier>                 
    </dependency>
  </dependencies>
      <modules>
            <module>../mymodule</module>
     </modules>

これにより、このモジュールを親として持つすべてのモジュールが、再パッケージ化された P2 アーティファクトにアクセスできるようになります。

于 2012-09-03T10:42:00.457 に答える