2016-07-26 13 views
1

私はGradleの依存関係の管理を使用してのIntelliJ IDEA 2016年に編集された二つのプロジェクトがあります。Gradleの依存性管理 - 推移依存関係のバージョンが正しくない

:プロジェクトAとプロジェクトB.

プロジェクトAのようにelasticsearchのコンパイルスコープの依存関係を定義します

compile 'org.elasticsearch:elasticsearch:2.3.1' 

プロジェクトBがように、プロジェクトAのコンパイルスコープの依存関係を宣言します。

compile 'com.mycompany:elasticsearch-common:2.3.1' 

私はインテリでGradleのツールウィンドウでは、期待されますプロジェクトBのためのJ IDEA 2016は、確認してください:

... 
com.mycompany:elasticsearch-common:2.3.1 (Compile) 
    org.elasticsearch:elasticsearch:2.3.1 (Compile) 
... 

は、代わりに私が見る:それは別の依存関係の宣言によって上書きされていないので、

... 
com.mycompany:elasticsearch-common:2.3.1 (Compile) 
    org.elasticsearch:elasticsearch:1.5.2 (Compile) 
... 

プロジェクトBには他の依存性は、elasticsearchに依存します。

<dependency> 
    <groupId>org.elasticsearch</groupId> 
    <artifactId>elasticsearch</artifactId> 
    <version>2.3.1</version> 
    <scope>compile</scope> 
</dependency> 

なぜIntelliJのは1.5.2であるとしてelasticsearchのための推移バージョンを報告している:

は確かに、プロジェクトAのための私達のネクサス上のpom.xmlはこれを持っていますか?私が試した何

  1. はGradleのキャッシュを削除し、プロジェクトBのディレクトリ内.ideaと.gradleを削除
  2. 飲む多くを誓う
  3. キャッシュを無効化し、IntelliJの
  4. に再起動しますお茶の
  5. 友人や同僚に質問
  6. (5関連)トイレに行くと、私は戻って

を得るとき、それは魔法のように自分自身を修正することを望ん

  • このすべてが大丈夫だったときです(もはや)のIntelliJ 15に戻すんオプラ
  • をメールで送信上記の作業はありません。

    プロジェクトBで具体的にelasticsearch:2.3.1の依存関係を指定していますが、推移的な依存関係の理由のすべてを否定するものではありません。

    何か助けていただければ幸いです。

    コメントでLanceJavaによって示唆されるようにアップデート1
    は、私が起こっていたか見てgradle dependenciesを走りました。

    これは、具体的にそれをダウングレードだということを示しています。

    :dependencyInsight 
    com.mycompany:elasticsearch-common:2.3.1 (selected by rule) 
    \--- compile 
    
    org.elasticsearch:elasticsearch:1.5.2 (selected by rule) 
    
    org.elasticsearch:elasticsearch:2.3.1 -> 1.5.2 
    \--- com.mycompany:elasticsearch-common:2.3.1 
        \--- compile 
    

    誰もがなぜこれが起こっている任意のアイデアを持っている:私はそれが思いついたその依存関係上のGradle dependencyInsightを走った

    org.elasticsearch:elasticsearch:2.3.1 -> 1.5.2 
    

    アップデート2
    これが答えを持っているようだ:https://discuss.gradle.org/t/excluded-dependence-comes-back-when-spring-boot-plugin-is-applied/17945/2

    Gradleの春ブートプラグインがビットを引き継ぐと、それは私はありませんにもかかわらず、自身の依存関係のバージョン(だ強制するのが好きと思われますspring-dataを使用しているspring-boot-startterを使用して)。

    は、私が追加することによって、これを固定:私のbuild.gradleファイルへ

    ext[elasticsearch.version] = '2.3.1' 
    

  • +1

    'gradle dependencies' fomコマンドラインを試してみてください。何が起こっているのかを教えてください。おそらくカスタム(ResolutionStrategy)があります(https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html) –

    +0

    @ LanceJavaありがとう!私はこれを具体的にダウングレードしているようです: org.elasticsearch:elasticsearch:2.3.1 - > 1.5.2 私がdependencyInsightを実行したとき、それは次のようになりました: org.elasticsearch:elasticsearch:1.5.2ルールによって) org.elasticsearch:elasticsearch:2.3.1 - > 1.5.2 \ --- com.mycompany:elasticsearch-common:2.3.1 \ --- runtime – ndtreviv

    +0

    @LanceJava更新を参照してください。 – ndtreviv

    答えて

    2

    このプロジェクトでは、特定のバージョンのライブラリを適用するspring-bootgradle pluginを使用していましたが、私のelasicsearchバージョンを強制的にダウングレードして、そのバネデータ要件私のプロジェクトではバネデータを使用していませんでしたが)。

    私は実行することで、これを発見:

    として出てきた時に
    gradle dependencyInsight --dependency elasticsearch --configuration compile 
    

    org.elasticsearch:elasticsearch:1.5.2 (selected by rule) 
    
    org.elasticsearch:elasticsearch:2.3.1 -> 1.5.2 
        \--- com.mycompany:elasticsearch-common:2.3.1 
         \--- runtime 
    

    私は(selected by rule)部分は何かがプログラム的にその特定のバージョンを選択したことを意味していることを学んだし。それはプラグインに絞られました。

    私が唯一であること、4つのプラグインを使用していました:

    1. javaの
    2. のmaven
    3. アイデア
    4. 春ブート

    と私は他の場所で使用されていなかっただけで、プラグイン(したがって、他の場所でこの問題に苦しんでいなかった)spring-bootでした。

    このプラグインをコメントアウトすると、依存関係が正しいことがわかりました。

    ext[elasticsearch.version] = '2.3.1' 
    

    ソート:

    は、この時点で私は明示的に私がして、使用したいバージョンを指定するために必要なことを学びました。私のためにもっとお茶!

    関連する問題