IT story

안드로이드 빌드 스크립트 리포지토리 : jcenter vs mavencentral

hot-time 2020. 4. 15. 12:33
반응형

안드로이드 빌드 스크립트 리포지토리 : jcenter vs mavencentral


마지막으로 Android Studio를 사용했을 때 빌드 스크립트 저장소가있는 .gradle파일이 생성 mavencentral()되었지만 지금은 있습니다 jcenter().

누구든지 이것과 관련된 문제를 설명 할 수 있습니까? 다른 저장소가 있습니까? 언제 전환해야합니까? 프로젝트, 모듈, 라이브러리에 어떤 영향을 미칩니 까? 안드로이드 개발자를위한 다른 필수품?

이러한 저장소를 유지 관리하는 담당자는 누구입니까?


Bintray에서 방금 Google이 변경 한 이유를 설명 하는 매우 자세한 블로그 게시물 을 다시 블로그에 게시했습니다 . 가장 중요한 점은 다음과 같습니다.

  • JCenter는 Bintray의 Java 저장소로 , Java 및 Android OSS 라이브러리, 패키지 및 구성 요소를위한 세계 최대 규모의 저장소입니다.
  • JCenter의 모든 컨텐츠는 안전한 HTTPS 연결로 CDN을 통해 제공됩니다. 마이그레이션 당시 (Android Studio 0.8) 중앙 maven 2 리포지토리는 HTTP 전용이었으며 HTTPS는 지원되지 않았습니다. 참조 : 51.6.2. Maven 중앙 저장소 .
  • jcenter()mavenCentral()추가 세트로 , 많은 추가 저장소 및 아티팩트를 포함합니다.
  • 다른 시나리오와 국가에서 Bintray는 Maven Central보다 빠릅니다 (예 : 이스라엘). 다른 곳에서는 매우 가깝습니다. Maven Central과 Bintray는 지역에 따라 다른 CDN을 사용하기 때문에 두 가지 방식으로 바뀔 수 있습니다.
  • Bintray는 레거시 Maven Central과 다른 패키지 식별 방식을 사용합니다. 이것은 크고 심각한 보안 문제입니다. 그것은 중요하다.
  • 패키지를 Maven Central로 가져와야하는 경우 (레거시 도구를 지원하기 위해) 버튼을 클릭하거나 자동으로 Bintray에서도 패키지를 수행 할 수 있습니다 .

성능 향상과 관련하여 몇 가지 안드로이드 개발자 옹호자들은 maven central과의 거대한 색인 생성 문제에 직면하거나 주목했습니다.

Tor Norbye 의 말에서 :

새로운 설정 디렉토리로 AndroidStudio를 실행 했으므로 maven central에 연결하여 사용 가능한 아티팩트 색인을 다운로드했습니다.

그런 다음 디렉토리의 크기를 보았습니다.

내 ~ / Library / Cache / AndroidStudioPreview는 1.5G이며, 그 중 1.2G는“Maven”하위 디렉토리에서 가져옵니다.

말도 안돼. 우리는 색인을 거의 사용하지 않습니다. 프로젝트 구조 대화 상자의 의존성 편집기는 주로 사용되지만 사전 계산 된 색인이 필요하지 않습니다. MavenCentral에는 누군가가 아티팩트를 검색 할 때 필요에 따라 사용할 수있는 빠른 온라인 JSON 검색 기능이 있습니다. 에서 https://android-review.googlesource.com/#/c/94843/ 우리는 의존성 여부를 검사가 최신 보풀이 검사를 추가하고, 유물의 소수에 대한 검색 근처 순간이다.

간단히 말해, 우리는 실제로 캐시가 필요하지 않습니다. .gradle 및 maven .pom 파일의 코드 완성에 도움이 될 수 있지만 이는 매우 중요한 유스 케이스가 아니며 모든 사용자가 하루에 1.5G의 다운로드 속도와 디스크 공간을 희생해야 할 필요는 없습니다 . 더 읽기 : Maven 지수는 엄청납니다 !

또한, Hacker News에 대한 매우 짧은 (1Q 및 1A) 토론이 흥미로울 것입니다.


내가 함께 있으리라 JFrog 뒤에 회사 참조 내 프로필 정보와 링크를.


나는 똑같은 것을 궁금해했고 결정적인 대답은 없지만 내가 배운 것을 (작은) 공유 할 가치가 있다고 생각했습니다. Google Code의 한 문제 내 에서 Maven Central에서 JCenter로 이동 한 것에 대한 언급을 발견 했지만이 문제가 발생한 시점에 대한 세부 정보를 찾지 못했습니다. 최근 Android Studio의 변경 사항 목록에서 언급을 찾을 수 없었습니다.

JCenter를 읽음으로써 JFrog 회사의 Bintray 뒤에있는 저장소입니다 (이전에 본 적이있는 사람은 'J'의 출처입니다). Bintray 블로그에 따르면 Bintray는 Maven Central의 상위 세트 이므로 사실이 아닌 경우 누락 된 종속성과 관련된 문제는 없어야하지만 프로젝트에서 사용중인 항목에 정확히 의존 할 것이라고 생각합니다. 쉽게 검색 가능한 웹 사이트가 모두 있으므로 repos를 확인하십시오. 따라서이 리포지토리를 유지 관리하는 사람에게는 내가 아는 것처럼 각 리포지토리에 종속성을 추가하고 서비스를 유지 관리하는 것은 리포지토리 소유자에게 달려 있습니다.

전환시기와 관련하여 해결하기가 어렵습니다. AOSP는 여전히 Maven Central을 사용하고 있습니다 (새 안드로이드 응용 프로그램 용 템플릿을 보면). 그런 다음에도 템플릿은 여전히 ​​오래된 Gradle 버전 (0.4)을 사용하고 있습니다. jcenter의 종속성에 문제가있는 다른 사람들에게는 몇 가지 문제가 있지만 실제로는 많이보고되지 않았으며 Google은 AS final을 릴리스하기 전에 다른 저장소로 다시 전환 할 수 있습니다. Maven Central이 여전히 귀하를 위해 여전히 잘 작동하고 있다면, 특히 대규모 상용 솔루션을 구축 할 때까지 전환을 중단 할 수 있습니다.


build.gradle 파일의 기본값이 무엇이든 팀 기반 개발 노력에서는 실제로 Sonatype Nexus 또는 JFrog Artifactory와 같은 저장소 관리자를 사용해야하며 해당 업스트림 저장소를 직접 참조하지 않아야합니다.

이를 통해 많은 대역폭을 절약하고 많은 리포지토리를 결합하여 자신의 네트워크에서 모두 관리 할 수 ​​있습니다.

Maven Central과 JCenter의 관점에서. JCenter는 JFrog의 Maven Central을 포용, 확장 및 소멸시키기위한 노력입니다. Maven Central은 Maven, SBT 및 기타의 기본 저장소이며 Gradle은 JCenter로 전환되었습니다. JFrog와 Gradleware가 회사로서 함께 작동한다는 점을 고려하면 놀라운 일이 아닙니다. Android SDK는 현재 Gradle을 빌드 시스템으로 사용하므로 JCenter 로의 전환은 다음 단계의 논리입니다.

JCenter 자체는 Maven Central 위에 얇은 베니어입니다. 프록시를 프록시 처리 (약간 성공)하고 추가 구성 요소를 추가합니다. 둘 다 CDN 네트워크와 고성능에서 호스팅됩니다. Maven Central 자체는 모든 Eclipse, Apache 및 대부분의 다른 오픈 소스 프로젝트의 대상이며 JCenter가 없으면 대부분 비어 있습니다.

둘 중 하나를 사용하면 정상적으로 작동하지만 리포지토리 관리자를 사용하여 소스를 제어 할 수있는 소스로 바로 이동하는 것이 좋습니다. 예를 들어 Nexus Open Source 는 무료이며 Maven, Gradle, SBT, Ivy 등에서 사용되는 Maven 리포지토리와 NuGet, NPM 및 RubyGems 지원을 지원합니다.

면책 조항 : 저는 Android Maven Plugin의 프로젝트 리더 인 무료 Central Repository의 후원자 인 Nexus 및 Nexus 트레이너와 함께 Nexus 및 Nexus 트레이너와 함께 Repository Management의 저자이며 AOSP에서 다시 빌드하여 일부 Android 라이브러리를 Central로 푸시했습니다.


http://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/ko

이 기사는 당신에게 질문에 대답 할 수 있습니다.

처음에 Android Studio는 Maven Central을 기본 리포지토리로 선택했습니다. 이전 버전의 Android Studio에서 새 프로젝트를 생성하면 build.gradle에 mavenCentral ()이 자동으로 정의됩니다.

그러나 Maven Central의 큰 문제는 개발자 친화적이지 않다는 것입니다. 라이브러리를 업로드하는 것은 놀랍습니다. 그렇게하려면 개발자는 어느 정도 괴짜이어야합니다. 그리고 보안 문제와 같은 더 많은 이유가 있기 때문에 Android Studio 팀은 최신 버전의 Android Studio에서 새 프로젝트를 만들면 jcenter ()가 자동으로 정의됨을 알 수 있으므로 기본 저장소를 jcenter로 전환하기로 결정했습니다. mavenCentral () 대신.

참고 URL : https://stackoverflow.com/questions/24852219/android-buildscript-repositories-jcenter-vs-mavencentral

반응형