7

私は現在、自分のビルド (~30 バンドル) を tycho に任せようとしています。単体テストでMockito
を使用しているときに、いくつかの紛らわしい問題に直面しました。テスト済みのバンドルに as fragment プロジェクト を作成しました。tycho はマニフェストを使用して必要なバンドルを解決する必要があるため、.mockito への依存関係を. 次に、マニフェストの必要なバンドルにmockitoを追加しようとすると、mockitoがリストされません。この投稿を見つけて、Eclipse indigo を指すターゲット プラットフォームを作成しました。
eclipse-test-pluginpom.xml

プラットフォームの仕様を含めたので、Eclipse デルタ パックは必要ありません。そして、最初の奇妙なことが起こります。Eclipse は、満たされない依存関係がいくつかあり、新しく作成したターゲット プラットフォームを Eclipse 内でアクティブに設定すると、 などのパッケージを Eclipse で解決できないと言っていますorg.osgi.framework。しかし、eclipse-producttycho とターゲット プラットフォームを使用してビルドすると、動作します。

私のターゲットプラットフォーム

現在のEclipseインストールをアクティブなプラットフォームとして設定すると、バンドルが解決されます。indigo リリースの以下を選択しました。

  • Eclipse RCP プラグイン開発者リソース
  • Equinox ターゲット コンポーネント
  • Jetty ターゲット コンポーネント

したがって、私の最初の質問は、「ターゲット プラットフォームのどこが悪いので、tycho は使用できるのに、Eclipse は使用できないのですか?」ということです。

元の問題 (mockito の実行) に近づくために、現在の Eclipse インストールをアクティブなターゲット プラットフォームとして設定しました。その後、Eclipse はorg.osgi.frameworkパッケージなどを解決できます。上記の投稿のように
、以前に削除したmockitoへの依存関係を再度追加しました。pom.xmlしかし、マニフェストで必要なバンドルに追加しようとすると、mockito が見つかりません。

私の 2 番目の質問は、「何が間違っているのですか? Eclipse 更新サイト (例: Maven 中央リポジトリ) で公開されていないバンドルをどのように参照しますか?」です。

更新:調査中に、非 p2-update-siteからのバンドルをターゲット プラットフォームに含める 2 つの方法を見つけました。

  1. Nexus Pro Nexus
    のプロフェッショナル バージョンは、Maven セントラル リポジトリのようなデフォルトの Maven リポジトリを p2 更新サイトにラップできる p2-Proxy リポジトリをサポートしていますが、プロフェッショナル バージョンの価格は年間約 800 ドルです。
  2. eclipse-repositoryを作成する必要なすべてのバンドルを含む
    パッケージを使用して、新しい Maven プロジェクトを作成できます。 eclipse-repository 作成されたアーティファクトは、共通の Web サーバーにデプロイされます。

ターゲット プラットフォームでは、Nexus p2-proxy リポジトリまたは Web でホストされている p2-リポジトリを参照できます。
他の方法を知っている人はいますか - おそらくより便利/安価ですか?

tychoの紛らわしい世界をもう少し理解するのを手伝ってください...
よろしくお願いします

4

1 に答える 1

3

mockito がターゲット プラットフォームにない (そして p2 リポジトリにない) 場合、おそらく最も簡単な方法は、依存関係を pom に再度追加することです (mockito インポートをマニフェストから削除せずに)。 .

target-platform-configuration プラグインの構成で、pom で次のように指定する必要があると思います。

  <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>target-platform-configuration</artifactId>
    <version>${tycho-version}</version>
    <configuration>
      <pomDependencies>consider</pomDependencies>
    </configuration>
  </plugin>

pom-first アーティファクトに依存関係を追加する手順を参照してください。(リゾルバーを指定する必要があるかどうかはわかりません)。

Nexus での p2 リポジトリのサポートに関して、私の理解では、Nexus の p2 プラグインはその後オープンソース化されました。

于 2011-10-20T14:49:55.023 に答える