Skip to content

Gradle 設定リポジトリとプロジェクトリポジトリの競合エラー解決方法

問題

Androidプロジェクトの build.gradle ファイルに JitPack リポジトリを追加しようとすると、以下のエラーが発生します:

Caused by: org.gradle.api.InvalidUserCodeException: Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 'build.gradle'

このエラーは、Gradle 6.8で導入された「集中リポジトリ宣言」機能によって発生します。新しいバージョンのGradle(7.0以降)では、リポジトリの設定方法が変更され、従来の build.gradle ファイルでの設定と競合するようになりました。

注意

Gradle 7.0以降では、リポジトリの宣言方法が変更されています。従来の方法と新しい方法が混在するとこのエラーが発生します。

解決方法

この問題には主に2つの解決方法があります。

方法1: settings.gradle を使用する(推奨)

新しいGradleのベストプラクティスに従い、settings.gradle ファイルでリポジトリを設定します。

  1. build.gradle から allprojects ブロックを削除またはコメントアウトします
  2. settings.gradle ファイルを開き、以下のように編集します:
groovy
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }  // JitPackリポジトリを追加
    }
}

rootProject.name = "あなたのプロジェクト名"
include ':app'
  1. プロジェクトを同期(Sync Now)します

リポジトリモードについて

RepositoriesMode には3つのモードがあります:

  • FAIL_ON_PROJECT_REPOS:プロジェクトレベルのリポジトリを禁止
  • PREFER_PROJECT:プロジェクトリポジトリを優先
  • PREFER_SETTINGS:設定リポジトリを優先(デフォルト)

方法2: 従来の方法に戻す

新しい集中リポジトリ機能を使用せず、従来の方法で設定する場合は:

  1. settings.gradle から dependencyResolutionManagement ブロックを削除します
  2. build.gradle で従来通り設定します:
groovy
allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}

非推奨の注意

この方法は後方互換性のために残されていますが、新しいプロジェクトでは方法1を採用することをお勧めします。

認証が必要なリポジトリの場合

プライベートリポジトリなど、認証が必要な場合は以下のように設定します:

groovy
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {
            name = "CustomMavenRepo"
            url = uri("https://your.custom.repo/url")
            credentials {
                username = "yourUsername"
                password = "yourPassword"
            }
        }
    }
}

セキュリティ警告

認証情報を直接コードに書くのは避け、gradle.properties ファイルを使用することをお勧めします。

まとめ

Gradleの新しい集中リポジトリ管理機能により、リポジトリの設定は settings.gradle で行うことが推奨されています。既存のプロジェクトを更新する場合や新しいライブラリを追加する際は、build.gradle ではなく settings.gradle を編集するようにしましょう。