[解決済み] どのようにしたら、Gradleは2つの依存関係に同じバージョンを設定するように強制することができますか?
質問
以下の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
どのようにしたら、Gradleがこれら2つの依存関係に同じバージョンを設定するように強制できますか?
解決方法は?
依存関係の1つがguavaのバージョンを強制的に更新しています。使用方法
gradle dependencies
を使って、どのライブラリがあなたのバージョンを回避しているのかを突き止めます。
あなたが抱えている問題は、無理に14.0.1を使うと他のライブラリが正常に動作しなくなる可能性があることです。17.0を依存先として使用することはできないのでしょうか?
build.gradleで個々のバージョン番号を管理するのではなく、私はバージョン番号のマッピングを持つdependencies.gradleファイルを使用し、それをbuild.gradleに引き込んでいます。そうすることで、私は単一のguavaバージョンを維持する必要があるだけです。ですから、あなたの例は次のようになります。
依存関係.gradle
ext {
ver = [
guava: '14.0.1'
]
}
で、build.gradle ファイルに記述します。
apply from: "dependencies.gradle"
dependencies {
compile group: 'com.google.guava', module: 'guava', version: ver.guava
compile group: 'com.google.guava', module: 'guava-gwt', version: ver.guava
}
であれば、17.0に移行するときにdependencies.gradleを変更すればいいだけです。
で推移的依存関係をfalseに設定するのも断然好きです。
configurations.compile { transitive = false }
この方法では、コンパイル時にいくつかの依存関係を回避することができますが、回避するライブラリが完全に後方互換性がない場合、実行時に問題が発生する可能性があります。しかし、コードを書いている以上、どのライブラリを使用しているかは知っておくべきだし、依存関係についても明示的に示すべきだろう。そうすることで、依存関係がアップグレードされ、あなたを混乱させることを防げます。
関連
-
[解決済み] com.android.supportのライブラリは全て全く同じバージョン表記である必要があります。
-
[解決済み] android.support.v4.app.FragmentActivity' で 'TAG' がプライベートアクセスされている。
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み] アイテムの親を取得する際にエラーが発生しました。AppCompat v23にアップグレードした後、指定された名前に一致するリソースが見つかりません。
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] gradleに依存関係を強制的に再ダウンロードさせるには?
-
[解決済み] Gradle に特定の JDK バージョンを使用するように指示する方法は?
-
[解決済み】Android Studioです。jarをライブラリとして追加しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] この配列の中の数字を入れ替えるには、何が足りないのでしょうか?ジャバ
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] javac ソースファイルが見つかりません
-
[解決済み] raw 型のメンバへのアンチェックの呼び出し
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] 文字列が一意な文字であるかどうかを判定する
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] Java: getInstanceとStaticの比較
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について