5

プロジェクト (いくつかのモジュールを含む) の pom.xml のいずれかで依存関係のバージョンを変更すると、プロジェクト構造のライブラリ セクションに新しいバージョンと古いバージョンが表示されます。

たとえば、最近 Drools をバージョン 5.4 から 5.5 に変更しました。ライブラリセクションに入ると、両方のライブラリが表示されたので、手動で 5.4 を削除しました。

pom.xml ファイルで参照されていないライブラリを削除するように IDEA に指示するにはどうすればよいですか?

ありがとうございました

4

2 に答える 2

7

まあ、これは同期プロジェクト ライブラリの問題ではありません。

同期設定は、Settings > Maven > Importing > Import maven project automatically

しかし、これは別の問題だと思います。これは、異なる Drools バージョンを使用する他の依存関係が原因です。その依存関係から古い Drools バージョンを明示的に除外する必要があります。

依存関係を引き起こしているこの問題を見つける方法は?

依存関係ツリーを開きます。right clickMaven モジュールを介して実行し、 Show dependenciesCtrl + Alt + Shift + U をクリックまたはヒットします。

同じ Maven アーティファクトの別のバージョンにつながる赤い線がいくつかあります。それをクリックするだけで、矛盾が発生した場所に Idea が導きます。次に、間違ったバージョンの Maven アーティファクトを右クリックしExlude、Shift + 削除をクリックします。

を確認してくださいpom.xml。次のような行が見つかるはずです。

<exclusions>
   <exclusion>
      <artifactId>drools</artifactId>
      <groupId>drools</groupId>
      <version>5.4</version>
    </exclusion>
</exclusions>
于 2013-10-18T08:56:03.280 に答える
1

どうもありがとう、ミラン。

私の場合の問題は IntelliJ のバグ (または機能!) のようですが、あなたの回答は非常に役に立ちましたので、承認済みとしてマークします。IntelliJ は孫の依存バージョンを更新しないようです。

何が起こるか説明します。

親 POM (P) と 2 つの子 POM (C1 および C2) があります。

親 P は、以下を含むいくつかのプロパティを定義します。

<drools.version>5.4.0.Final</drools.version>

子 C1 は、以下を使用してその Drools バージョンに依存します。

<dependency>
  <groupId>org.drools</groupId>
  <artifactId>drools-core</artifactId>
  <version>${drools.version}</version>
</dependency>

C2 は C1 に依存しているため、その Drools のバージョンに間接的に依存しています。

親 POM のバージョンを 5.5.0.Final に変更し、(その POM の) 変更をインポートすると、[プロジェクト構造] ウィンドウの [ライブラリ] セクションに、5.4.0.Final と 5.5.0.Final の両方のバージョンが含まれます。

その理由は、C2 がまだ古いバージョンに依存していると考えているためです。C1 の依存関係ツリーは、Drools の正しいバージョン 5.5.0.Final を示しています。ただし、C2 の依存関係ツリーは、C1 (右) への依存関係を示しており、C1 は古い 5.4.0.Final バージョン (間違ったバージョン) に依存しています。

それを修正するために、C1 の POM (または私が推測するすべての POM) を再インポートします。次に、5.4.0.Final がラ​​イブラリから削除され、C2 の依存関係ツリーに正しい Drools バージョンが反映されます。

于 2013-10-18T11:26:46.520 に答える