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

Posted

技术标签:

【中文标题】构建被配置为更喜欢设置存储库而不是项目存储库,但存储库“maven”是由构建文件“build.gradle”添加的【英文标题】:Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 'build.gradle' 【发布时间】:2021-09-13 13:25:07 【问题描述】:

我想将 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

由于我没有“allrepositories”来将我的依赖项放在那里(只能在那里工作),所以我在 buildscript 代码之后创建并添加了这段代码:

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'

【问题讨论】:

【参考方案1】:

Android 引入了一种定义存储库的新方法。

setting.gradle 文件中删除dependencyResolutionManagement 块,让您的项目以旧方式工作。

【讨论】:

为我工作,谢谢! 谢谢,但我还必须从 build.gradle 中删除“testImplementation 'junit:junit:'” 太棒了..现在我遇到了一些新错误 - Could not find androidx.databinding:viewbinding:7.0.3. 以及其他一些代码段,如 paypal 相关代码和其他代码 此解决方案有效!谢谢。 这很好用。只是想知道他们为什么这样做? settings.gradle 中的dependencyResolutionManagement 有什么特别的重要性吗?【参考方案2】:

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

dependencyResolutionManagement 
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories 
        google()
        mavenCentral()
        maven  url 'https://jitpack.io' 
    

【讨论】:

这真的很有帮助!非常感谢 这是正确的方式。【参考方案3】:

您需要更新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'

【讨论】:

【参考方案4】:

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' 
    

【讨论】:

【参考方案5】:

解决方案:

您可以添加此网址 在 settings.gradle(Project Settings) 文件中, 您可以在 Gradle 脚本

中找到

像这样在 dependencyResolutionManagement 中添加您的网址

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

#完整参考见下图,

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

谢谢! :)

【讨论】:

【参考方案6】:

替换这一行:

repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)

使用这个:

repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)

之前

之后

  repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)

【讨论】:

【参考方案7】:

随着 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 
     `  
   
 

【讨论】:

以上是关于构建被配置为更喜欢设置存储库而不是项目存储库,但存储库“maven”是由构建文件“build.gradle”添加的的主要内容,如果未能解决你的问题,请参考以下文章

Git将第二个文件添加到旧存储库而不是新存储库

查询访问存储库而不返回数据

我可以在 Spring Boot 中测试我的存储库而不实际将测试数据保存在数据库中吗?

有没有什么办法可以将我的存储库下载为zip并添加到我的本地存储库而不是使用git(repo snc命令)?

链接构建的静态库而不是使用 add_subdirectory?

配置 SBT 以仅解析 Ivy 存储库中的 jar(而不是 war)