构建配置为更喜欢设置存储库而不是项目存储库,但存储库“maven”是由构建文件“build.gradle”添加的

And*_*ira 327 android gradle

我想将 jitpack.io 添加为我的 gradle 文件中的存储库。这是我的 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
}
Run Code Online (Sandbox Code Playgroud)

由于我没有“allrepositories”来放置我的依赖项(仅适用于那里),因此我在 buildscript 代码之后创建并添加了此代码:

allprojects {
    repositories {
        maven {url 'https://www.jitpack.io'}
    }
}
Run Code Online (Sandbox Code Playgroud)

但这是我得到的错误

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'
Run Code Online (Sandbox Code Playgroud)

小智 478

基本信息

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

您有 2 个选择:

删除中央声明以使用您当前的配置

为此,您需要dependencyResolutionManagementsetting.gradle文件中删除该块(=新方法)。然后repositories你的配置build.gradle将再次工作(=旧方式)。

build.gradle (与您的示例相比没有变化)

allprojects {
    repositories {
        maven {url 'https://www.jitpack.io'}
    }
}
Run Code Online (Sandbox Code Playgroud)

更新以新方式工作

前进的方向是编辑build.gradle删除该repositories声明。然后编辑settings.gradle以包含 Maven 配置。

设置.gradle

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • Gradle 喜欢改变事物,就像它是一个高级时尚品牌一样,当它们是一个重视惯性的构建工具时 (11认同)
  • 或者您可以设置 `repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)` (9认同)
  • 这很有效。只是想知道他们为什么这样做?settings.gradle 中 dependencyResolutionManagement 有什么具体重要性吗? (5认同)
  • 太棒了..现在我有一些新错误 - `无法找到 androidx.databinding:viewbinding:7.0.3.` 以及其他一些代码段,例如 `paypal` 相关代码和其他代码 (4认同)

小智 283

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

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这比我所接受的答案更好,它使用新系统而不是禁用它。 (28认同)
  • 这比接受的答案更好。和工作ofc (2认同)

Seu*_*att 111

您需要更新设置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'
Run Code Online (Sandbox Code Playgroud)


lav*_*ava 75

替换这一行:

repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
Run Code Online (Sandbox Code Playgroud)

用这个:

repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述

  repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
Run Code Online (Sandbox Code Playgroud)


小智 23

转到 Settings.gradle 并将其放入存储库中

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}
Run Code Online (Sandbox Code Playgroud)


Mor*_*ori 19

gradle version '7.1.0'只需要添加maven { url 'https://jitpack.io' }进去即可setting.gradle

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}
Run Code Online (Sandbox Code Playgroud)


Shr*_*sey 19

解决方案:

您可以在settings.gradle(Project Settings)文件中添加此 url ,您可以在Gradle Scripts中找到该文件,

像这样在dependencyResolutionManagement中添加您的 url

dependencyResolutionManagement{
    maven {
        url 'https://jitpack.io'
    }    
}
Run Code Online (Sandbox Code Playgroud)

#完整参考见下图, 在此输入图像描述

现在同步它,它会起作用,

谢谢你!:)


nor*_*dar 5

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