programing

빌드가 프로젝트 리포지토리보다 설정 리포지토리를 선호하도록 구성되었지만 'maven' 저장소가 빌드 파일 'build.gradle'에 의해 추가되었습니다.

css3 2023. 8. 28. 21:20

빌드가 프로젝트 리포지토리보다 설정 리포지토리를 선호하도록 구성되었지만 'maven' 저장소가 빌드 파일 'build.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
}

종속성을 저장할 "모든 저장소"가 없기 때문에(여기서만 작동함) 빌드 스크립트 코드 다음에 이 코드를 만들고 추가했습니다.

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'

일반 정보

Gradle 6.8은 저장소를 정의하는 새로운 방법인 중앙 저장소 선언을 도입했습니다.최신 설명서(7.4.2)는 여기에서 확인할 수 있습니다.

여기서부터는 두 가지 옵션이 있습니다.

현재 구성에서 사용할 중앙 선언 제거

이를 위해 다음을 제거해야 합니다.dependencyResolutionManagement에서 차단.setting.gradlefile(=새로운 방식).그리고 그다음에repositories의 구성build.gradle다시 작동합니다(=이전 방식).

build.gradle(예에서 변경되지 않음)

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

새로운 방식으로 업데이트

앞으로 나아가는 방법은 편집하는 것입니다.build.gradle그것을 제거하는 것.repositories선언.그다음에 편집.settings.gradle메이븐 구성을 포함합니다.

settings.grad

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

settings.grade의 dependencyResolutionManagement 내부에 jitpack.io 을 저장소로 추가할 수 있습니다.

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

의 설정을 업데이트해야 합니다.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'

이 줄 바꾸기:

repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)

사용:

repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)

전에

enter image description here

끝나고

enter image description here

  repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)

Settings.gradle로 이동하여 리포지토리 안에 넣습니다.

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

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' }
    }
}

솔루션:

이 URL은 settings.gradle(Project Settings) 파일에 추가할 수 있습니다. 이 파일은 Gradle Scripts에서 찾을 수 있습니다.

다음과 같이 url을 inside dependencyResolutionManagement에 추가합니다.

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

#자세한 내용은 아래 그림을 참조하십시오.

이제 동기화하면 작동할 것이고,

감사합니다! :)

제 경우에는, 그냥 삭제합니다.dependencyResolutionManagement{...}에서라고 진술합니다.settings.gradle새 프로젝트는 기본적으로 settings.gradle에 추가됩니다.

Android 스튜디오가 업데이트되었기 때문에 당신은 당신의 설정에서 의존성을 조절해야 합니다.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 
     `  
   
 

로그인/암호로 보호된 리포지토리에 액세스하는 경우 - 사용해 보십시오.

GitHub repo를 기반으로 한 예제

<settings.gradle file>


groovy

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}"
            }
        }
    }
}


kotlin

// ...
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/OWNER/REPOSITORY")

            val userNamePropertyFromGradleProperties: String by settings
            val passwordPropertyFromGradleProperties: String by settings

            credentials {
                username = userNamePropertyFromGradleProperties
                password = passwordPropertyFromGradleProperties
            }
        }

settings.gradle에 이 줄을 추가합니다.

자세한 내용은 여기에서 확인하십시오.

삭제할 수도 있습니다.

dependencyResolutionManagement{}

에 방해가 되는.

세팅.그레이들

파일을 저장한 다음 저장소를 추가합니다.

빌드.그래들

예를 들어 프로젝트 수준에서

allprojects {
repositories {
    google()
    mavenCentral()
} }

또는 저장소를 직접 작성합니다.

dependencyResolutionManagement{}

오른쪽 상단을 클릭하여 프로젝트를 동기화하는 것을 잊지 마십시오.

지금 동기화

다음과 같이 settings.gradle 내부 종속성 해결 관리에 추가합니다.

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

일부 오래된 조언을 통해 maven {url "https://jitpack.io "}을(를) root build.gradle에 추가할 수 있지만 최신 버전을 사용하는 한 build.gradle 대신 settings.gradle에 간단히 넣을 수 있습니다.

나의 경우, 나는 settings.gradle에 mavenLocal()을 추가합니다.

언급URL : https://stackoverflow.com/questions/69163511/build-was-configured-to-prefer-settings-repositories-over-project-repositories-b