티스토리 뷰

Mobile

jcenter, 이제 문 닫습니다

G마켓 기술블로그 2024. 7. 17. 10:53

안녕하세요. Mobile Application 팀 전계원입니다.

어느 날 Android 개발 중 jcenter 에 있는 경고 문구를 확인하였습니다.

이에 궁금증을 가지고 jcenter 와 관련하여 찾아본 이런저런 내용들에 대해 공유드리고자 합니다.

 

0. 프롤로그 - jcenter() 코드에 그어진 한 개의 줄


 

Android Studio 의 다크테마 속에서 jcenter() 코드가 노랗게 반짝이고 있었습니다.

마우스를 올려보니 "jcenter maven repository 는 update 를 제공하지 않는다" 라고 쓰여있었습니다.



 

jcenter 에 대체 무슨 일이 있었던 것일까요?



1. Gradle 저장소에서 사라진 jcenter 의 흔적


https://docs.gradle.org/current/userguide/declaring_repositories.html

그러고 보니 gradle 공식문서를 살펴보면 과거에는 Gradle 저장소에는 mavenCentral(), jcenter(), google() 이렇게 3가지가 있다고 쓰여있었는데, 최근 문서를 확인해 보면 jcenter 는 어디론가 사라져 있었습니다.



https://docs.gradle.org/current/userguide/declaring_repositories.html

여기서 mavenCentral() 은 java 프로젝트에서의 오픈소스 라이브러리들을 받기 위한 저장소이며, google() 은 Android SDK 에 포함되어 있는 Android 라이브러리를 가져오기 위한 maven 저장소입니다.



2. 우리식당 정상 영업합니다


jcenter 는 bintray 에서 호스팅 하고 있는 Java 와 관련한 라이브러리와 패키지 등이 저장된 오픈소스 라이브러리 공개 저장소입니다.



https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

어느 날 bintray 에서 21년 2월에 jcenter 을 지원중단할 것이며, jcenter 사용자들은 새로운 호스팅 솔루션으로 migration 하기를 권하였고, 21년 4월부터는 jcenter 의 새로운 업데이트는 받지 않는다는 공식 포스트가 업로드되었습니다.



https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

다행히 jcenter repository 가 지원중단되지만, 업데이트가 되지 않을 뿐 서버가 문을 닫는 것은 아니었습니다.



덕분에 우리는 지원 중단된 jcenter 를 여전히 사용할 수 있으며, 갑자기 빌드가 실패하는 문제를 겪지 않을 수 있었습니다.



3. jcenter 문 닫습니다 (2024년 8월 15일 예정)


https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

2024년 7월 2일. binray 는 read-only 로 저장소를 유지한 지 3년이 지났으니 maven central 로 옮길 수 있도록 지원하기 위해 jcenter 를 완전히 종료하겠다는 공식 포스트를 업로드하였습니다.

추가로 갑자기 서버를 내리면 이를 참조하고 있던 수많은 프로젝트들이 혼돈에 겪을 것이기에 bintray 는 다음과 같은 Brownout Schedule 을 발표합니다.

서버 내림 일정 (한국시간 기준)

  • 7월 30일 16:00 ~ 17:00 (1시간)
  • 7월 31일 03:00 ~ 04:00 (1시간)
  • 8월 05일 16:00 ~ 20:00 (4시간)
  • 8월 06일 03:00 ~ 07:00 (4시간)
  • 8월 07일 22:00 ~ 8월 08일 22:00 (24시간)
  • 8월 15일 09:00 ~ (문 닫습니다)



4. jcenter 가 문을 닫으면 우리 같은 개발자들은 어떻게 하라는 겐가?


https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

서버가 문을 닫게 되면 jcenter 를 향한 모든 request 들은 자동으로 모두 maven central(https://repo1.maven.org/maven2/) 로 redirect 됩니다.

그렇기 때문에 현존하는 project 들이 영향을 받을 수 있으며, maven central 과 호환되지 않는 버전을 참조하고 있다면 빌드시점에 오류가 발생할 수 있습니다.

이를 해결하는 방법은 간단합니다.



...

dependencies {
    api "com.android.volley:volley:1.1.0"
    ...
}

우선 jcenter() 를 지우고 mavenCentral() 로 변경합니다.
그리고 volley 를 예시로 하였을 때 위와 같이 오래된 라이브러리가 존재하면 라이브러리를 찾지 못한다고 이 시점에서 에러가 발생할 수 있습니다.



https://repo.maven.apache.org/maven2/com/android/volley/volley/

이 경우 MavenCentral 에서 호환되는 버전을 확인 후 알맞은 버전으로 업데이트하면 해결할 수 있습니다.



5. TL;DR


  • jcenter 는 bintray 에서 호스팅 하는 java 오픈소스 라이브러리 공개저장소입니다
  • 2021년 2월에 지원 중단했지만 서버를 내린 것은 아니었습니다
  • 2024년 8월 15일에 서버를 내릴 예정입니다.
  • 서버 내리면 jcenter 로 향한 모든 요청은 mavenCentral 로 redirect 됩니다
  • mavenCentral 저장소에는 없는데 jcenter 에만 있는 구버전 라이브러리를 사용한다면 mavenCentral 에서 호환하는 라이브러리 버전으로 업데이트가 필요합니다.



6. 참고자료


JCenter Sunset on August 15th, 2024 : https://jfrog.com/blog/jcenter-sunset/

Into the Sunset on May 1st: Bintray, GoCenter, and ChartCenter : https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

Gradle 공식문서 : https://docs.gradle.org/current/userguide/declaring_repositories.html

댓글