3

Bndtools ワークスペースで、特定のプロジェクトの JUnit と Mockito に依存関係を追加したい

したがって、プロジェクトのbnd.bndファイルには次の-testpath命令が含まれています。

-testpath: \
    junit:junit;version=latest,\
    org.mockito:mockito-core;version=latest

の「グローバル」bnd ファイルは、cnf/ext/repositories.bnd次のリポジトリを示します。

-plugin: \
    aQute.bnd.repository.osgi.OSGiRepository; \
        name=Bndtools Hub; \
        locations=https://raw.githubusercontent.com/bndtools/bundle-hub/master/index.xml.gz; \
    , \
    aQute.bnd.repository.maven.pom.provider.BndPomRepository; \
        releaseUrls=https://repo.maven.apache.org/maven2/; \
        pom=${workspace}/cnf/maven-central.xml; \
        location=cnf/cache/maven-central.xml; \
        name=Maven Central;

に、maven-central.xml次の依存関係を示します。

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
  </dependency>
  <dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>2.6.3</version>
  </dependency>
</dependencies>

[リポジトリ] ビューには、両方のリポジトリが表示されます。Mockito ライブラリは、Maven リポジトリの v2.6 と Bndtools Hub の v 1.x の両方のリポジトリにも存在します。

JUnit の依存関係は問題なく解決できますが、何を試しても、Mockito の依存関係は解決できません。

リポジトリビューは、解決できないエントリを感嘆符[!]NullPointerExceptionで装飾します。

ここに画像の説明を入力

Bndtools をデバッグすると、それぞれの POM ファイルのローカル コピーがないという結論に達します ( bnd issue #1849を参照)。ただし、POM ファイルがない理由がわかりません。

Mockito の代わりに AssertJ などの他のライブラリも試しましたが、大きな違いはありませんでした。したがって、これは Mockito 自体の問題ではないようです。

Mockito を解決できない理由、またはこれを修正する方法についてのヒントは大歓迎です。

4

1 に答える 1

0

あなたの例が機能しない理由は正確にはわかりませんが、Bndtools 4.1 と 4.2-dev を Mockito と AssertJ の両方で (同時に両方とも) 正常に使用できました。OSGi enRoute 7.0 テンプレートには Mockito が含まれています。

pom が 2.6.3 を指定しているのに、Bndtools リポジトリ ビューが 2.6.0 を示しているのは少し疑わしいです。Bndtools が更新していないか、適切に解析していないように思えます。また、Mockito の推移的な依存関係もダウンロードしていません。オフライン モードで実行していないことを確認してください。

Bndtools の最新バージョンにアップグレードして、問題が解決するかどうかを確認してください。4.2-dev と Mockito 2.6.3 で試してみたところ、うまくいくようです (必要な推移的な依存関係のダウンロードを含む)。

これが機能しない場合は、依存関係セクションだけでなく、maven-central.xml pom ファイル全体を投稿してください (または、ファイルに依存関係セクションのみが含まれていますか?)。

これらの提案のいくつかが役立つことを願っています。

また、注意してください (少し無関係です): OSGi で AssertJ を使用している場合は、必ず 3.11.1 以降を使用してください。以前のバージョンでは、OSGi マニフェストに小さなバグがあり、仮定が機能しませんでした ( https://github.com/joel-costigliola/assertj-core/issues/1290を参照)。

于 2019-01-18T16:17:49.073 に答える