프로그래밍/Gradle

Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 오류 해결방법

Lou Park 2023. 10. 21. 00:39

오류 해석

빌드가 project/build.gradle에 선언된 repository보다 settings.gradle에 선언된 repositories를 선호하도록 설정되어 있으나, 프로젝트단에서 "maven"이라는 repositories를 선언해버렸다는 의미이다.

 

원인

settings.gradle.kts 파일에는 RepositoriesModeFAIL_ON_PROJECT_REPOS로 설정되어 있다. 이 RepositoriesMode는 3가지 종류가 있다.

 

  • RepositoriesMode.PREFER_PROJECT
    • 기본 값, settings.gradle에 선언된 repositories를 무시하고, project단의 repositories를 참조한다.
  • RepositoriesMode.FAIL_ON_PROJECT_REPOS
    • project단에서 repository를 선언하면 빌드시 오류를 발생시킨다.
  • RepositoriesMode.PREFER_SETTINGS
    • project단의 repositories를 무시하고, settings.gradle에 선언된 repositories를 참조한다.

 

dependencyResolutionManagement {  
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)  
        repositories {  
            google()  
            jcenter()  
            mavenCentral()  
            maven { url = uri("https://www.jitpack.io") 
        }  
    }  
}

하지만 app 모듈에서만 참조하는 repository를 선언하려다 app/build.gradle.kts에도 repository를 선언하게 되었고, 그래서 오류가 났던 것이다.

 

해결 방법

해결하고자하는 방향에 따라 다르다.
실수로 Project단에서 repositories를 선언한 경우, 해당 블록을 지워주면된다.

나처럼 특정 프로젝트에서만 따로 repositories를 선언하고 싶은 경우에는 RepositoriesModePREFER_PROJECT로 설정 해주어야한다.

 

참고 https://jaeryo2357.tistory.com/110