Kiedy ostatnio korzystałem z Android Studio, generowałem .gradle
pliki z mavencentral()
repozytoriami buildscript, ale teraz jest jcenter()
.
Czy ktoś mógłby wyjaśnić związane z tym problemy. Czy są jeszcze jakieś repozytoria? Kiedy powinniśmy je zamienić? Jaki wpływ mają na projekty, moduły, biblioteki? Jakieś inne niezbędne rzeczy dla programistów Androida?
Kto jest odpowiedzialny za utrzymanie tych repozytoriów?
Odpowiedzi:
Na Bintray właśnie opublikowałem bardzo szczegółowy post na blogu opisujący powody, dla których Google dokonało tej zmiany. Oto najważniejsze punkty:
jcenter()
jest nadzbioremmavenCentral()
, który obejmuje wiele dodatkowych repozytoriów i artefaktów.Jeśli chodzi o poprawę wydajności, kilku zwolenników programistów Androida napotkało / zauważyło problem ogromnego indeksowania za pomocą maven central.
Słowami Tor Norbye :
Również ta krótka (1Q i 1A) dyskusja w Hacker News może okazać się interesująca.
Jestem z JFrog , firmą z tyłubintray i sztuczny, zobacz mój profil po szczegóły i linki.
źródło
Zastanawiałem się nad tym samym i nie mam ostatecznej odpowiedzi, ale pomyślałem, że warto podzielić się tym, czego (niewiele) się nauczyłem. Znalazłem wzmiankę o przejściu z Maven Central do JCenter w ramach jednego numeru Google Code , ale nie dostrzegłem szczegółów dokładnie, kiedy to się stało - nie mogłem znaleźć wzmianki na liście ostatnich zmian dla Androida Studio.
Po przeczytaniu na JCenter, jest to repozytorium za Bintray, od firmy JFrog (z którą się wcześniej spotkałem i chyba stąd pochodzi „J”). Według bloga Bintray Bintray jest nadzbiorem Maven Central , więc jeśli to prawda, nie powinno być problemów z brakującymi zależnościami, ale myślę, że będzie to zależało od tego, czego dokładnie używasz w swoich projektach - zawsze możesz bezpośrednio sprawdź repozytorium, ponieważ oba mają ładne, łatwe do przeszukiwania strony internetowe. Więc dla tych, którzy utrzymują te repozytoria, jak najlepiej wiem, od producentów zależności zależy, czy dodadzą swoje zależności do każdego repozytorium, a od właściciela repozytorium po prostu utrzymanie usługi.
Trudno jest się zorientować, kiedy zmienić. Myślę, że AOSP nadal korzysta z Maven Central (po przejrzeniu szablonów dla nowej aplikacji na Androida), ale potem ten szablon również używa bardzo starej wersji Gradle (0.4). Jest kilka problemów z innymi, którzy mają problemy z zależnościami od jcenter, ale nie jest to zbyt wiele zgłaszanych, i możliwe jest, że Google ponownie przełączy się na inne repo przed wydaniem AS final. Jeśli Maven Central nadal działa dla ciebie dobrze, możesz wstrzymać się z przełączaniem do tego czasu, szczególnie jeśli budujesz duże rozwiązania komercyjne.
źródło
Bez względu na domyślną wartość w pliku build.gradle - w zespołowym wysiłku programistycznym powinieneś naprawdę użyć menedżera repozytorium, takiego jak Sonatype Nexus lub JFrog Artifactory i nie odwoływać się bezpośrednio do tych repozytoriów.
Pozwoli ci to zaoszczędzić dużo przepustowości, połączyć oba i wiele innych repozytoriów oraz zarządzać nimi we własnej sieci.
Pod względem Maven Central vs. JCenter. JCenter to wysiłek JFrog, aby objąć, rozszerzyć (i eksterminować?) Maven Central. Maven Central jest domyślnym repozytorium w Maven, SBT i innych, podczas gdy Gradle przeszedł na JCenter. Nie jest to zaskakujące, biorąc pod uwagę, że JFrog i Gradleware współpracują ze sobą jako firmy. Ponieważ zestaw Android SDK używa teraz Gradle jako systemu kompilacji, przejście do JCenter było logicznym krokiem.
Sam JCenter to cienki fornir na wierzchu Maven Central. Przybliża go (mniej lub bardziej skutecznie) i dodaje dodatkowe komponenty. Oba są hostowane w sieciach CDN i charakteryzują się wysoką wydajnością. Sam Maven Central jest celem wszystkich projektów Eclipse, Apache i większości innych projektów open source, a bez niego JCenter byłby w większości pusty.
Używanie któregokolwiek z nich będzie działało dobrze, ale sugerowałbym, aby przejść bezpośrednio do źródła, w którym możesz, a ponadto przejąć nad nim kontrolę za pomocą menedżera repozytorium. Nexus Open Source na przykład jest bezpłatny i ma obsługę repozytoriów Maven używanych przez Maven, Gradle, SBT, Ivy i innych, a także obsługę NuGet, NPM i RubyGems.
Oświadczenie: Jestem autorem Repository Management with Nexus i trenerem Nexus dla Sonatype, sponsora bezpłatnego Central Repository, lidera projektu wtyczki Android Maven i przesunąłem niektóre biblioteki Androida do Central poprzez przebudowę z AOSP.
źródło
http://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en
ten artykuł może odpowiedzieć na pytanie.
źródło