Terakhir kali saya menggunakan Android Studio, itu menghasilkan .gradle
file dengan mavencentral()
repositori buildscript sedangkan sekarang ada jcenter()
.
Adakah yang bisa menjelaskan masalah yang terkait dengan ini. Apakah ada repo lain? Kapan kita harus mengubahnya? Apa dampaknya terhadap proyek, modul, lib? Adakah hal penting lainnya untuk pengembang Android?
Siapa yang bertanggung jawab memelihara repo-repo itu?
Jawaban:
Di Bintray saya hanya me - reblog sebuah posting blog yang sangat rinci yang menjelaskan alasan mengapa Google melakukan perubahan ini. Inilah poin-poin terpenting:
jcenter()
adalah superset darimavenCentral()
, yang mencakup banyak repositori dan artefak tambahan.Mengenai peningkatan kinerja, beberapa pendukung pengembang android telah menghadapi / memperhatikan masalah pengindeksan besar dengan pakar pusat.
Dalam kata-kata Tor Norbye :
Juga, Anda mungkin menemukan diskusi yang sangat singkat (1Q dan 1A) tentang Hacker News ini menarik.
Saya dengan JFrog , perusahaan di belakangbintray dan artifactory, lihat profil saya untuk detail dan tautan.
sumber
Saya bertanya-tanya sama, dan saya tidak memiliki jawaban yang pasti tetapi saya pikir mungkin ada baiknya membagikan apa (sedikit) yang telah saya pelajari. Saya menemukan penyebutan perpindahan dari Maven Central ke JCenter dalam satu masalah di Google Code , tetapi tidak menemukan detail tentang kapan tepatnya ini terjadi - tidak dapat menemukan penyebutan dalam daftar perubahan terbaru untuk Android Studio.
Dari membaca di JCenter, itu adalah repositori di belakang Bintray, dari perusahaan JFrog (yang pernah saya temui sebelumnya, dan saya kira dari situlah 'J' berasal). Menurut blog Bintray, Bintray adalah superset dari Maven Central , jadi jika itu benar seharusnya tidak ada masalah dengan dependensi yang hilang, tapi saya kira itu akan tergantung pada apa yang Anda gunakan dalam proyek Anda - Anda selalu dapat langsung periksa repo karena keduanya memiliki situs web yang mudah dicari. Jadi bagi siapa yang mengelola repo ini, seperti yang saya tahu, tergantung pada produsen dependensi untuk menambahkan dependensi mereka ke setiap repo, dan hingga pemilik repo hanya untuk mempertahankan layanan.
Dalam hal kapan harus beralih sulit untuk bekerja. AOSP masih menggunakan Maven Central saya pikir (dari mencari di Templat untuk Aplikasi Android Baru), tetapi kemudian template itu juga masih menggunakan versi Gradle yang sangat lama (0,4) juga. Ada beberapa masalah tentang orang lain yang memiliki masalah dengan dependensi dari jcenter, tetapi tidak banyak yang dilaporkan, dan ada kemungkinan bahwa Google akan beralih lagi ke beberapa repo lain sebelum merilis final AS. Jika Maven Central masih bekerja dengan baik untuk Anda untuk saat ini, Anda dapat menunda peralihan hingga saat itu terutama jika Anda sedang membangun solusi komersial besar.
sumber
Tidak peduli apa defaultnya di file build.gradle - dalam upaya pengembangan berbasis tim Anda harus benar-benar menggunakan manajer repositori seperti Sonatype Nexus atau JFrog Artifactory dan tidak mereferensikan repositori upstream tersebut secara langsung.
Ini akan memungkinkan Anda untuk menghemat banyak bandwidth, menggabungkan keduanya dan banyak repositori lainnya dan mengatur semuanya di jaringan Anda sendiri.
Dalam hal Maven Central vs JCenter. JCenter adalah upaya dari JFrog untuk merangkul, memperluas (dan memusnahkan?) Maven Central. Maven Central adalah repositori default di Maven, SBT dan lainnya, sementara Gradle telah beralih ke JCenter. Ini tidak mengherankan mengingat bahwa JFrog dan Gradleware bekerja bersama sebagai perusahaan. Karena Android SDK menggunakan Gradle sebagai sistem bangun sekarang, pindah ke JCenter adalah langkah logis berikutnya.
JCenter sendiri adalah lapisan tipis di atas Maven Central. Proksi itu (kurang lebih berhasil) dan menambahkan komponen tambahan. Keduanya di-host di jaringan CDN dan berkinerja tinggi. Maven Central sendiri adalah target untuk semua Eclipse, Apache, dan sebagian besar proyek open source lainnya dan tanpanya JCenter sebagian besar akan kosong.
Menggunakan salah satu dari mereka akan bekerja dengan baik, tetapi saya akan menyarankan untuk langsung pergi ke sumber di mana Anda dapat dan di atasnya mengambil kendali dengan menggunakan manajer repositori. Nexus Open Source misalnya gratis dan memiliki dukungan untuk repositori Maven seperti yang digunakan oleh Maven, Gradle, SBT, Ivy, dan lainnya serta dukungan NuGet, NPM, dan RubyGems.
Penafian: Saya penulis Manajemen Repositori bersama Nexus dan pelatih Nexus untuk Sonatype, sponsor Repositori Tengah gratis, pimpinan proyek dari Plugin Android Maven dan telah mendorong beberapa perpustakaan Android ke Central dengan membangun kembali dari AOSP.
sumber
http://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en
artikel ini dapat menjawab pertanyaan Anda.
sumber