Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 'build.gradle'

回答 13 浏览 12万 2021-09-13

我想在我的gradle文件中添加jitpack.io作为存储库。 这是我的gradle根文件。

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.2"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21"

        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.38.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

由于我没有"allrepositories"来放置我的依赖性(只在那里工作),我在buildcript代码之后创建并添加了这段代码。

allprojects {
    repositories {
        maven {url 'https://www.jitpack.io'}
    }
}

但是,我得到的错误是这样的

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'
André Nogueira 提问于2021-09-13
13 个回答
#1楼 已采纳
得票数 268

Gradle 6.8 引入了存储库的中央声明,定义存储库的新方法。最新文档 (7.4.2) 可以在这里找到.

setting.gradle文件中删除dependencyResolutionManagement块,让你的项目按老方法工作。

YCuicui 提问于2021-09-15
cod3monk3y 修改于2022-04-27
谢谢,但我也不得不从build.gradle中删除 "testImplementation 'junit:junit:'"。Cor 2022-01-14
很好,现在我有了一些新的错误--Could not find androidx.databinding:viewbinding:7.0.3.和其他一些代码段,如paypal相关的代码和其他也是如此。Vivek Thummar 2022-01-26
这样做效果很好。只是想知道他们为什么要这样做?在settings.gradle中的dependencyResolutionManagement有什么特殊的重要性吗?oyeraghib 2022-03-17
你在哪里Bro....?我在过去的3天里一直在想这个办法.....谢谢兄弟......你是个救世主......。Aqeel Mughal 2022-04-04
或者你可以设置repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)desertSniper87 2022-08-07
#2楼
得票数 202

您可以在 settings.gradle 中的 dependencyResolutionManagement 中添加 jitpack.io 作为存储库

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}
wwilczyn 提问于2021-10-09
这比公认的答案要好,它使用了新的系统,而不是禁用它。Julius Naeumann 2022-05-06
这比公认的答案要好,而且还可以工作。Sãúrâßh Jáðhàv 2022-06-27
#3楼
得票数 83

您需要更新settings.gradle中的设置并将repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)更改为repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)

最后,将maven { url 'https://jitpack.io' }添加到存储区块中。

完整的settings.gradle文件看起来会是这样的:

import org.gradle.api.initialization.resolve.RepositoriesMode

dependencyResolutionManagement { 
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    repositories { 
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
        maven { url 'https://jitpack.io' }
    }
}
rootProject.name = "appname"
include ':app'
Seun Matt 提问于2021-11-13
#4楼
得票数 44

替换这行字。

repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)

使用此方法:

repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)

Before

enter image description here

After

enter image description here

  repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
lava 提问于2022-02-19
lava 修改于2022-05-10
谢谢 @lava 它可以工作,只需添加目标和编译SDK版本33即可。Vishal kumar singhvi 2022-08-11
#5楼
得票数 18

gradle version '7.1.0' 中只需在setting.gradle 中添加maven { url 'https://jitpack.io' }

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}
Mori 提问于2022-01-29
#6楼
得票数 18

进入Settings.gradle,并将其放在仓库内。

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}
Ryadh Hanafi 提问于2022-05-16
#7楼
得票数 16

解决方案:

你可以添加这个网址 在 settings.gradle(Project Settings) 文件中, 您可以在 Gradle 脚本中找到它,

dependencyResolutionManagement内添加你的网址,就像这样

dependencyResolutionManagement{
    maven {
        url 'https://jitpack.io'
    }    
}

#参见下面的图片以获得完整的参考,在此输入图片描述

现在同步它,它将会工作。

谢谢你!:)

Shridhar Chouksey 提问于2022-02-04
#8楼
得票数 4

随着 Android Studio 的更新,您必须通过 setting.app 控制您的依赖关系

dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
    google()
    mavenCentral()
    jcenter() // Warning: this repository is going to shut down soon
    maven { url 'https://jitpack.io' }
  }

} rootProject.name = "EmfDetector" 包括 ':app'

请将这条线放在呼吸系统

      maven { url 'https://jitpack.io' } //as i have done above 
     `  
   
 
Mazhar Iqbal 提问于2022-02-10
Mazhar Iqbal 修改于2022-02-10
#9楼
得票数 4

就我而言,我只是删除了settings.gradle 中的dependencyResolutionManagement{...} 语句,新项目默认添加到settings.gradle 中

normidar 提问于2022-05-31
#10楼
得票数 1

在settings.gradle中添加这行内容

在此查看更多信息

Mudassir Ahmed 提问于2022-07-18
虽然这个链接可能会回答这个问题,但最好在这里包括答案的基本部分,并提供链接供参考。如果链接的页面发生变化,仅有链接的答案可能会变得无效。- 从审查开始The Dreams Wind 2022-07-21
#11楼
得票数 0

有些老建议让你把maven { url "https://jitpack.io" }添加到根build.gradle中,但只要你使用的是最新版本的as,你可以简单地把它放到settings.gradle中,而不是build.gradle。

xv6amateur 提问于2022-04-04
#12楼
得票数 0

在我的例子中,我只是在settings.gradle中添加了mavenLocal()。

Tenshi 提问于2022-08-03
Tenshi 修改于2022-08-09
请不要把代码贴成图片。代码应该作为文本粘贴,并使用Markdown格式。(Stack Overflow编辑器中的工具栏可以帮助你做到这一点。)图片中的代码更难阅读,更难访问,不能被复制,也不会在相关的搜索中显示出来。请编辑你的帖子,把代码写成文本;这将帮助你获得更好的回应,并帮助防止你的答案被删除。Jeremy Caney 2022-08-07
#13楼
得票数 0

如果你通过登录/密码来访问存储库,请尝试这样做

这里的例子是基于GitHub repo的。

<settings.gradle>

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/OWNER/REPOSITORY")
            credentials {
                username = "${usernameFromYourGradlePropertiesFile}"
                password = "${passwordFromYourGradlePropertiesFile}"
            }
        }
    }
}
Grzegorz Dev 提问于2022-09-20
标签