6

いくつかのモジュールで構成される Maven プロジェクト。私のモジュールの 1 つは、Google バージョンの guava 依存関係を使用しています11.0.2。現在、私のプロジェクトに別のモジュールを統合していますが、これも guava を使用していますが version14です。

だから私は新しいモジュールがグアババージョンを使用することを望みます14が、残りのプロジェクトはグアババージョンを使用します11.0.2。新しいモジュールにグアバを追加しようとし<exclusion></exclusion>ましたが、うまくいきませんでした。

これを解決するためのヒント。

更新: @Guillaume Darmont's Answer は、さまざまなモジュールの問題を解決します。しかし、今私の問題は、新しいモジュールには2つの依存関係があり、そのうちの1つはグアバ11.0.2を使用しており、もう1つは14.0. これを管理する方法。モジュールのpomで、使用するグアバのバージョンを個別に指定できますか?

4

3 に答える 3

5

mvn dependency:tree command will help to determine which module is bringing the Guava 14 jar file.

于 2013-06-27T06:24:52.067 に答える
5

あなたの質問を理解しているので、新しいモジュール pom.xml に<dependencyManagement>forを追加できます。guava

<dependencyManagement>
  <dependencies>
      <dependency>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
          <version>14.0.1</version>
      </dependency>
  </dependencies>
</dependencyManagement>
于 2013-06-27T06:27:42.133 に答える
0

最初に、複数のプロジェクトの依存関係から推移的に参照されているmvn dependency tree可能性がある出力を確認してみてください11.0.2。除外しようとしている特定のグアバ バージョンを直接/間接的にプルダウンして、すべての依存関係に除外を追加する必要があります。

第二に、この競合を解決するのは簡単ではないかもしれません。バージョン番号の移行 (11 から 14 へ) を見ると、大きな移行のように思えます。14 バージョンを保持し、11 を除外する可能性が高くなります。

バージョンの変更がアプリケーションと互換性がない場合OSGi、プロジェクトで同じライブラリの異なるバージョンを確実に実行できるようにするなどの方法を使用するしかありません。

于 2013-06-27T06:31:13.727 に答える