Android 빌드스크립트 저장소: jcenter VS mavencentral
마지막으로 Android Studio를 사용했을 때.gradle
파일링mavencentral()
스크립트 저장소 구축에 비해jcenter()
.
이것과 관련된 문제에 대해 누구라도 설명해 줄 수 있나요?다른 저장소가 있습니까?언제 바꿀까요?프로젝트, 모듈, lib에 어떤 영향을 미칩니까?Android 개발자를 위한 다른 필수 요소는?
이러한 저장소의 유지보수는 누가 담당합니까?
Bintray에서는 구글이 이러한 변경을 한 이유를 설명하는 매우 상세한 블로그 투고를 재블로그했습니다.가장 중요한 점은 다음과 같습니다.
- JCenter는 Bintray에 있는 Java 저장소입니다.Java 및 Android OSS 라이브러리, 패키지 및 컴포넌트의 세계 최대 규모입니다.
- JCenter의 모든 콘텐츠는 CDN을 통해 안전한 HTTPS 연결을 통해 제공됩니다.이전 마이그레이션 시점(Android Studio 0.8) 중앙 maven 2 저장소는 HTTP 전용이며 HTTPS는 지원되지 않았습니다.참조: 51.6.2. 메이븐 중앙 저장소.
jcenter()
의 슈퍼셋이다.mavenCentral()
많은 추가 저장소 및 아티팩트를 포함합니다.- 다른 시나리오와 다른 국가에서 Bintray는 Maven Central보다 빠르다(예: 이스라엘).다른 곳에서는 매우 가깝습니다.Maven Central과 Bintray는 적응적으로 지역을 선호하는 다른 CDN을 사용하므로, 이는 양쪽 방향으로 변경될 수 있습니다.
- Bintray는 기존 Maven Central과는 다른 패키지 식별 방식을 가지고 있습니다.이것은 크고 심각한 보안 문제입니다. 그것은 중요하다.
- Maven Central(기존 툴 지원용)로 패키지를 가져와야 하는 경우 Bintray에서 버튼 클릭 한 번으로 또는 자동으로 패키지를 가져올 수도 있습니다.
퍼포먼스 향상에 관해서, Android 개발자의 옹호자 몇명은 maven central의 거대한 인덱스 작성 문제에 직면하거나 주목했습니다.
Android Studio를 새로운 설정 디렉토리로 실행했기 때문에 maven central에 접속하여 사용 가능한 아티팩트 인덱스를 다운로드했습니다.
그러다 우연히 내 디렉토리의 크기를 보게 되었다.
My ~/Library/Cache/AndroidStudioPreview는 1.5G이며, 그 중 1.2G는 "Maven" 하위 디렉토리에서 가져옵니다.
말도 안 돼.우리는 색인을 거의 사용하지 않는다.주로 Project Structure Dialog의 Dependency Editor를 사용하지만 사전에 계산된 인덱스를 가질 필요는 없습니다.MavenCentral에는 누군가가 아티팩트를 검색할 때 온 디맨드로 사용할 수 있는 빠른 온라인 JSON 검색이 있습니다.https://android-review.googlesource.com/#/c/94843/에는 의존관계가 최신인지 여부를 체크하는 보풀체크가 추가되어 몇 가지 아티팩트가 거의 즉시 검색됩니다.
간단히 말해 캐시는 정말 필요하지 않습니다. .gradle 및 maven .pom 파일의 코드 완성에 도움이 될 수 있지만, 이는 매우 중요한 사용 사례는 아니며, 모든 사용자가 1.5G의 다운로드 속도와 디스크 공간을 희생해야 하루 만에 사용할 수 있는 것은 아닙니다.자세한 내용은 이쪽:메이븐 지수가 엄청나네요!
또한 Hacker News에 대한 매우 짧은(1Q 및 1A) 토론도 흥미로울 수 있습니다.
저는 빈트레이와 아티팩토리의 배후에 있는 JFrog에서 일하고 있습니다.자세한 내용과 링크에 대해서는 제 프로필을 참조해 주십시오.
나도 같은 생각을 하고 있었고, 확실한 답은 없지만 내가 배운 것을 공유할 가치가 있을 것 같았다.구글 코드의 한 호에서 Maven Central에서 JCenter로의 이동에 대한 언급은 발견했지만, 정확히 언제 발생했는지에 대한 자세한 내용은 찾을 수 없었습니다.- Android Studio의 최근 변경 목록에서는 언급을 찾을 수 없었습니다.
JCenter에 대해 읽어본 결과, Bintray 뒤에 있는 저장소로, JFrog라는 회사가 있습니다.Bintray 블로그에 따르면, Bintray는 Maven Central의 슈퍼셋이기 때문에, 그것이 사실이라면, 의존 관계가 없어지는 문제는 없을 것입니다만, 프로젝트에서 무엇을 사용하고 있는지에 따라 다를 것입니다.두 회사 모두 검색하기 쉬운 웹사이트를 가지고 있기 때문에 언제든지 직접 저장소를 확인할 수 있습니다.따라서 이러한 저장소를 누가 유지하느냐에 따라 각 리포트에 종속성을 추가하는 것은 종속성 생산자에게 달려 있으며 서비스를 유지하는 것은 리포 소유자에게 달려 있습니다.
전환 시기에 관해서는 해결하기가 어렵다.AOSP는 (Templates for New Android Application을 검색했을 때) Maven Central을 사용하고 있지만, 그 템플릿도 매우 오래된 Gradle 버전(0.4)을 사용하고 있습니다.jcenter로부터의 의존성에 문제가 있는 것에 대해서는, 몇개의 문제가 있습니다만, 실제로 보고되는 것은 아닙니다.Google이 AS의 최종판을 발표하기 전에 다른 레포로 다시 전환할 가능성도 있습니다.Maven Central이 아직 정상적으로 작동하고 있다면 특히 대규모 상용 솔루션을 구축하고 있는 경우에는 그때까지 전환을 연기할 수 있습니다.
build.gradle 파일의 기본값이 무엇이든 간에 팀 기반 개발 작업에서는 Sonatype Nexus나 JFrog Architory와 같은 저장소 관리자를 사용해야 하며 이러한 업스트림 저장소를 직접 참조해서는 안 됩니다.
이것에 의해, 대량의 대역폭을 절약해, 다른 많은 저장소를 조합해, 독자적인 네트워크내에서 관리할 수 있습니다.
Maven Central 대 JCenter의 관점에서.JCenter는 JFrog의 수용, 확장(및 말살)을 위한 노력입니다.메이븐 센트럴Maven Central은 Maven, SBT 등의 기본 저장소이며 Gradle은 JCenter로 전환했습니다.JFrog와 Gradleware가 협력하고 있는 것을 감안하면 놀라운 일이 아니다.Android SDK는 현재 Gradle을 빌드 시스템으로 사용하고 있기 때문에 JCenter로의 이행은 논리적인 다음 단계였습니다.
JCenter 자체는 Maven Central 위에 얇은 베니어판입니다.프록시 처리(대부분 성공)하여 컴포넌트를 추가합니다.둘 다 CDN 네트워크에서 호스트되며 고성능입니다.Maven Central 자체는 Eclipse, Apache 및 기타 대부분의 오픈 소스 프로젝트의 타깃이며, 이것이 없으면 JCenter는 거의 비어 있을 것입니다.
어느쪽이든 상관없습니다만, 곧바로 소스로 이동하여 저장소 매니저를 사용하여 제어할 것을 권장합니다.예를 들어 Nexus 오픈 소스는 무료이며 Maven, Gradle, SBT, Ivy 및 기타에서 사용되는 Maven 저장소를 지원하고 NuGet, NPM 및 RubyGems도 지원합니다.
Disclaimer: I am the author of Repository Management with Nexus and Nexus trainer for Sonatype, the sponsor of the free Central Repository, the project lead of the Android Maven Plugin and have pushed some Android libraries to Central by rebuilding from AOSP.
http://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en
this article can answer you question .
At first, Android Studio chose Maven Central as a default repository. Once you create a new project from old version of Android Studio, mavenCentral() would be automatically defined in build.gradle.
But the big problem of Maven Central is it is not developer-friendly. It is surprisingly hard to upload the library to. To be able to do so, developer has to be at some level of geeky. And with some more reason for example a security concern and etc, Android Studio team decided to switch the default repository to jcenter instead as you can see that once you create a new project from latest version of Android Studio, jcenter() would be automatically defined instead of mavenCentral().
ReferenceURL : https://stackoverflow.com/questions/24852219/android-buildscript-repositories-jcenter-vs-mavencentral
'programing' 카테고리의 다른 글
vuex 모듈 내에서 작업/변화를 청취합니다. (0) | 2022.06.19 |
---|---|
구조체를 0으로 초기화 (0) | 2022.06.19 |
글로벌 스토어를 가져올 때 getter의 일부만 조롱합니다. (0) | 2022.06.19 |
Java에서 클래스를 매개 변수로 전달하려면 어떻게 해야 합니까? (0) | 2022.06.19 |
1 대 다, 다 대 1 및 다 대 다의 차이점 (0) | 2022.06.19 |