하나의 프로젝트에 여러 개의 앱을 생성할 예정이다.
그런데 각 앱마다 gradle의 버전 관리가 복잡해질 것 같아서 기존의 id 방식에서 버전 카탈로그 기능으로 바꿔보려고 했다.
버전 카탈로그 방식은 libs.versions.toml 이라는 것을 만들어서 라이브러리와 플러그인 버전을 관리하는 것인데 여기에 적으면 나머지 모듈에도 다 적용할 수 있어서 약간 복잡하지만 유지보수에는 매우 좋아보이는 방식이었다.
대략 설명을 하자면,
1. 루트단에 libs.versions.toml 파일 생성
2. 루트단의 build.gradle 에 이런 식으로 적고
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.jetbrains.kotlin.android) apply false
}
// 여기서 apply false 는 하위 모듈에 적용하라는 의미
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
}
dependencies {
implementation(libs.androidx.appcompat)
...
}
// libs.로 시작해야한다
이렇게 했어야 했는데.... 우리의 지피티가
versionCatalogs {
create("libs") {
from(files("gradle/libs.versions.toml"))
}
}
얘를 추가하라고 했었다. 그래서 당연히 추가했고 그랬더니
Invalid catalog definition:
이 에러가 뜬 것이다.
지피티 왈 from(files("gradle/libs.versions.toml")) 여기 부분이 중복이 된 것 같다고 하는 것이다! 나는 여기에 하나만 썼는데! 자꾸 중복이래!
그래서 다시 찾아보니 gradle 버전이 7.4 이상이면 저걸 굳이 쓰지 않아도 되는 것이었다. 그런데 나는 8.7 버전이고 그러니까 저걸 안 써도 되는데 굳이 써서 중복이라는 것이었다.
흐흑... 버전 확인이 항상 제일 중요하다!
오류를 해결하는데 참조한 사이트는 아래와 같습니다. 도와주셔서 감사합니다!