90

次の 2 つの依存関係を使用します。

compile 'com.google.guava:guava:14.0.1'
compile 'com.google.guava:guava-gwt:14.0.1'

正しく動作するには、両方が同じバージョンである必要があります。私の他の依存関係はより高いバージョンを使用するため、Gradle は依存関係ごとに異なるバージョンを使用します。

実行してこれを見つけましたgradle dependencies

compile - Compile classpath for source set 'main'.
 +--- com.google.guava:guava:14.0.1 -> 17.0
 +--- com.google.guava:guava-gwt:14.0.1
 |    +--- com.google.code.findbugs:jsr305:1.3.9
 |    \--- com.google.guava:guava:14.0.1 -> 17.0 

これら 2 つの依存関係に対して Gradle に同じバージョンを設定させるにはどうすればよいですか?

4

11 に答える 11

122

このセクションを dependencies.gradle ファイルに追加します

configurations.all {
        resolutionStrategy { 
            force 'com.google.guava:guava:14.0.1'
            force 'com.google.guava:guava-gwt:14.0.1'
        }
    }
于 2015-02-11T01:08:29.133 に答える
73
configurations.all {
  resolutionStrategy.eachDependency { details ->
    if (details.requested.group == 'com.google.guava') {
      details.useVersion "14.0.1"
    }
  }
}

dependencies {
  compile 'com.google.guava:guava'
  compile 'com.google.guava:guava-gwt'
}
于 2016-09-02T12:14:53.560 に答える
42

依存関係の 1 つが壊れた spring-web 4.2.4 を使用するという同様の状況がありました。必要な特定のライブラリ バージョンを強制する必要があります。別のコメントで述べたように、互換性の問題が発生する可能性がありますが、必要な場合もあります。

私が見つけたライブラリバージョンを強制する最も邪魔にならない方法は、使用する代わりに

compile "org.springframework:spring-web:4.2.3.RELEASE"

依存関係の構成を強制的に指定する:

compile("org.springframework:spring-web:4.2.3.RELEASE"){
    force = true
}

Springのバージョンを一時的に(次のリリースまで)ダウングレードする必要があるときに使用しました。

于 2016-02-10T18:57:50.230 に答える
6

別のオプションは、依存関係の制約を使用することです: https://docs.gradle.org/current/userguide/dependency_constraints.html

dependencies {
    implementation 'org.apache.httpcomponents:httpclient'
    constraints {
        implementation('org.apache.httpcomponents:httpclient:4.5.3') {
            because 'previous versions have a bug impacting this application'
        }
        implementation('commons-codec:commons-codec:1.11') {
            because 'version 1.9 pulled from httpclient has bugs affecting this application'
        }
    }
}
于 2019-08-24T07:53:54.457 に答える
1

両方の依存関係に新しいバージョンを使用しても問題ない場合、問題を解決する最も簡単な方法は、依存関係を更新することです。

compile 'com.google.guava:guava:17.0'
compile 'com.google.guava:guava-gwt:17.0'

これにより、両方が 17.0 になっていることが確認されます。古いバージョンでそれらの両方を強制しようとするよりも簡単で、追加のボーナスとして、(おそらく) バグ修正と新機能が付属している新しいバージョンを入手できます。

公平を期すために、@Klunk は「17.0 バージョンを依存関係として使用することはできませんか?」と質問することで、彼の回答でこれについて言及していますが、それは通り過ぎて見逃しやすいので、別の回答として投稿することは理にかなっていると思いました。 .

于 2018-02-05T15:55:14.937 に答える
0

これは、Gradle 7.1でテストされた Kotlin DSL (build.gradle.kts) 用です。

dependencies {
    implementation("org.jsoup", "jsoup") {
        version {
            strictly("1.14.3")
        }
    }
}

別の方法:

dependencies {
    implementation("org.jsoup:jsoup") {
        version {
            strictly("1.14.+") // You can also use dynamic versions
        }
    }
}

他の回答で示唆されている別の方法:

configurations.all {
    resolutionStrategy {
        force("org.jsoup:jsoup:1.14.3")
        force("com.google.guava:guava-gwt:14.0.1")
    }
}
于 2022-02-18T09:13:12.660 に答える