[Spring] jcenter

Geunhyung Pyun·2024년 1월 31일

Spring

목록 보기
3/4

배경

오랜만에 spring boot를 이용한 프로젝트를 작성하고자 하였다. build.gradle로 들어가 확인을 해봤는데 jcenter가 deprecated가 되었다는 것을 보게 되었다.

왜 deprecated 되었고 jcenter가 무엇인지, 다른 대체된 것이 무엇이 있는지 확인을 하고 작성을 하게 되었다.

repositoryhandler

일단 intellij 에서 보면 repositoryhandler 라고 나온다. 이것은 무엇일까?

이거는 Gradle에서 지원해주는 것이다. 보통 build.gradle 에서 작업을 할 때 볼 수 있다. ArtifactRepositoryContainer 인터페이스의 하위 인터페이스로 리포지토리 세트를 관리하고 리포지토리를 관리하고 정의할 수 있도록 해주는 역할을 한다.

더 쉽게 얘기하면 의존성에 관한 것들을 어떤 원격 저장소에서 받을지에 대해 정해주는 역할이다. 해당 인터페이스에는 여러가지 종류가 존재한다. 오늘 얘기할 jcenter와 mavenCentral 뿐만 아니라 gradlePluginPortal, flatDir, google 등이 존재한다.

jcenter

사실 mavenCentral을 쓰다가 jcenter가 나중에 나온 것이라 이거를 쓰다가 java 21 및 spring boot 3.2를 적용시킬 겸 보다가 알게 되었다. 이 친구는 어떤 녀석이였을까?

원래는 둘 다 있었으나 안드로이드 스튜디오에서 기본으로 mavenCentral을 택했었다. 그러나 개발자 친화적이지 않은 것이 문제였다. 일단, 라이브러리를 업로드하는 것부터 어려웠다. 또한 보안 문제도 엮여 있었고 이러한 이유로 기본을 jcenter로 변경하게 되었다.

그 때 당시 jcenter의 장점은 이와 같았다.

  • CDN을 통해 라이브러리를 제공하였고 이로 인해 더 빠르게 로딩을 할 수 있다.
  • 가장 큰 Java 레포지토리였다. mavenCentral에서 사용할 수 있던 것들은 jcenter에서도 사용이 가능했다.
  • 자체 라이브러리를 업로드하는 과정에서 mavenCentral에서 서명 혹은 작업을 수행하던 것과 달리 jcenter는 이같은 과정이 없다.
  • 친근한 UI

중단

하지만 jcenter를 운영하던 JFrog에서 jcenter를 운영 중지할 거라는 입장이 올라왔다. (2021/03/02)
2022년 2월 1일 jcenter에서 라이브러리 다운로드 서비스를 중지한다는 것이다. 이유는 악성코드가 포함된 라이브러리 패키지가 등록되는 사고가 있었고 이에 대한 사고방지 대책을 세우지 못하고 서비스를 닫는 선택인 것이다.

jcenter는 read-only로 계속 제공되겠으나 새로운 버전의 패키지는 받을 수 없고 jcenter뿐만 아니라 Bintray(jcenter에 배포하기 위한 플랫폼) 서비스는 중지되었다.

이로 인해 mavenCentral, google 등의 대체제로 변환하게 된다.

참고

profile
개발자를 원하는 사람.

0개의 댓글