본문 바로가기
개발 관련됨/개발 관련 유용한 정보함

[나만의 라이브러리 제작기-1] JCenter, MavenCentral 은 무엇인가?

by simplify-len 2020. 9. 12.

 

들어가기

 이번에 같이 스터디하는 햇님들과 함께 이야기를 나누다, 우리가 프로젝트를 진행시 자주 사용되는 Utility 성격의 Module은 라이브러리로 만든다면 어떠할까? 라는 질문으로 라이브러리를 제작하게 되었습니다.

 Assertion 이라는 라이브러리를 만들기 위한 여정으로, 그 시작은 JCenter, MavenCentral 등 흔히 Repository 라 불리는 것이 무엇인지에 대해서 이해해보려 합니다.

'Repository라 불리는 것은 무엇인가?' , 'gradle을 사용하지만, Maven Repository에 올릴 수 있는것인가?' 'Repository에 어떻게 올리는 것인가?' 등등 궁금한 부분이 많았습니다. 궁금증도 해결할 겸 나중에 이런 행위를 했었다는 것을 기억하기 위해 포스팅합니다.

JCenter, MavenCentral 이란?

위 두가지의 공통점은 오픈 소스 라이브러리를 호스팅하는 저장소  라고 할 수 있습니다. 또한 호스팅할 수 있다는 말은 다시 공유되어진다 라는 의미가 되겠죠? 안드로이드에서는 JCenter를 많이 사용하는데, 추후 알게된 사실이지만, google Repository가 있는데, 왜 JCenter를 사용하는지 그 이유가 궁금하네요.

MavenCentral 은 Maven 저장소을 호스팅하는 데 더 널리 사용되는 Nexus 소프트웨어의 배후 회사인 Sonatype 에서 운영합니다.

JCenter는 Bintray와 Artifactory를 만든 회사 인 JFlog에서 운영합니다. 

 

왜 JCenter를 사용하면 좋을까?

 이 두 가지의 차이점은 단순합니다. JCenter가 MavenCentral 보다 좀 더 뒤에 나왔고, 후발주자 답게, MavenCentral 보다 높은 사용자 경험과 간단한 워크플로우 측면에서 더 우위를 점한 부분이 있었습니다. (내용을 찾아보니, mavencentral 에 라이브러리를 올리는 것은 쉽지 않은 문제였습니다)

 실제로 JCenter에 publish 를 하는 경험을 하면서, MavenCentral 에도 올리기 위한 행위를 하려다, 복잡한 UI/UX로 진행하지 못했습니다.  또한 MavenCentral에 직접 배포를 하지 않은 이유는 JCenter에 배포하게 되면 MavenCentral 에 동기화할 수 있는 기능이 존재하기 때문에 진행할 필요가 없었습니다.

 또한, JFlog Blog 에 기고된 내용

 

Java: 12 Reasons to use a Binary Repository Manager When Developing with Java | JFrog

Artifactory is a Binary Repository Manager When Developing with Java that functions as a single access point organizing all of your binary resources including proprietary libraries, remote artifacts and other 3rd party resources.

jfrog.com

 살펴보면서 가장 큰 특징으로 Artifactory 가 존재함으로써 얻게되는 효율성이 좋다 는 것을 알게 되었습니다.

위 내용 중 일부 내용을 발췌합니다.

 

Gradle 에서 사용되는 그 밖에 Repository는?

아래는 Gradle의 공식 문서에 나온 내용입니다. maven, Bintray 그리고 google 총 가지의 Repository를 사용할 수 있음을 확인했습니다. 

좀 더 자세한 사용 방법에 대해서는 Gradle 공식 문서를 확인하세요.

이후 포스팅에는?

 이 포스트를 시작으로.

JFlog Bintray 에 올렸던 과정과, 그리고 Build.gradle에 어떻게 입력해야 하는지에 대한 부분을 소개할 예정입니다.

그리고 마지막으로, 가장 많은 시간을 소비하게된 SNAPSHOT 에 대한 고찰과 그 방식에 대한 내용으로 마무리할까 합니다.

[참고자료]

1. docs.gradle.org/current/userguide/declaring_repositories.html

2. reflectoring.io/bintray-jcenter-maven-central/#jcenter-vs-maven-central

3. medium.com/@nmauti/sign-and-publish-on-maven-central-a-project-with-the-new-maven-publish-gradle-plugin-22a72a4bfd4b

4. medium.com/@nmauti/publishing-a-project-on-maven-central-8106393db2c3

댓글