Das letzte Mal, als ich Android Studio verwendet habe, wurden .gradle
Dateien mit mavencentral()
Buildscript-Repositorys generiert jcenter()
.
Könnte jemand die damit verbundenen Probleme erklären. Gibt es noch andere Repos? Wann sollten wir sie wechseln? Welche Auswirkungen haben sie auf Projekte, Module, Bibliotheken? Weitere wichtige Informationen für Android-Entwickler?
Wer ist für die Pflege dieser Repos verantwortlich?
Antworten:
Bei Bintray habe ich gerade einen sehr detaillierten Blog-Beitrag verfasst, in dem die Gründe beschrieben werden, warum Google diese Änderung vorgenommen hat. Hier sind die wichtigsten Punkte:
jcenter()
ist eine Obermenge vonmavenCentral()
, die viele zusätzliche Repositories und Artefakte umfasst.In Bezug auf Leistungsverbesserungen hatten einige Befürworter von Android-Entwicklern das Problem der riesigen Indizierung mit Maven Central gesehen / bemerkt.
Mit den Worten von Tor Norbye :
Vielleicht finden Sie diese sehr kurze Diskussion (1Q und 1A) in den Hacker News auch interessant.
Ich bin bei JFrog , der Firma dahinterbintray und künstlichEinzelheiten und Links finden Sie in meinem Profil .
quelle
Ich habe mich das gleiche gefragt, und ich habe keine endgültige Antwort, aber ich dachte, es könnte sich lohnen, zu teilen, was ich (wenig) gelernt habe. Ich habe die Umstellung von Maven Central auf JCenter in einer Ausgabe von Google Code erwähnt , aber keine Details darüber gefunden, wann genau dies geschehen ist. In der Liste der letzten Änderungen für Android Studio wurde keine Erwähnung gefunden.
Nach dem Lesen von JCenter ist es das Repository hinter Bintray von der Firma JFrog (der ich zuvor begegnet bin, und ich denke, dort kommt das 'J' her). Laut dem Bintray-Blog ist Bintray eine Obermenge von Maven Central . Wenn dies zutrifft, sollte es keine Probleme mit fehlenden Abhängigkeiten geben, aber ich denke, es wird genau davon abhängen, was Sie in Ihren Projekten verwenden - Sie könnten immer direkt Überprüfen Sie die Repos, da beide schöne, leicht durchsuchbare Websites haben. Für diejenigen, die diese Repos verwalten, liegt es meines Wissens an den Produzenten der Abhängigkeiten, ihre Abhängigkeiten zu jedem Repo hinzuzufügen, und dem Repo-Besitzer, nur um den Service aufrechtzuerhalten.
In Bezug auf den Zeitpunkt des Wechsels ist es schwierig zu trainieren. Ich denke, AOSP verwendet immer noch Maven Central (aus der Suche nach Vorlagen für neue Android-Anwendungen), aber diese Vorlage verwendet auch immer noch eine sehr alte Gradle-Version (0.4). Es gibt einige Probleme mit anderen, die Probleme mit Abhängigkeiten von jcenter haben, aber nicht wirklich viele gemeldet haben, und es ist möglich, dass Google vor der Veröffentlichung von AS final erneut zu einem anderen Repo wechselt. Wenn Maven Central vorerst noch gut für Sie funktioniert, können Sie das Umschalten bis dahin unterbrechen, insbesondere wenn Sie große kommerzielle Lösungen entwickeln.
quelle
Unabhängig von der Standardeinstellung in der Datei build.gradle sollten Sie bei einer teambasierten Entwicklung wirklich einen Repository-Manager wie Sonatype Nexus oder JFrog Artifactory verwenden und nicht direkt auf diese vorgelagerten Repositorys verweisen.
Auf diese Weise können Sie viel Bandbreite sparen, beide und viele andere Repositorys kombinieren und alles in Ihrem eigenen Netzwerk verwalten.
In Bezug auf Maven Central vs JCenter. JCenter ist das Bestreben von JFrog, Maven Central zu umarmen, zu erweitern (und auszurotten?). Maven Central ist das Standard-Repository in Maven, SBT und anderen, während Gradle zu JCenter gewechselt ist. Dies ist nicht überraschend, wenn man bedenkt, dass JFrog und Gradleware als Unternehmen zusammenarbeiten. Da das Android SDK jetzt Gradle als Build-System verwendet, war die Umstellung auf JCenter ein logischer nächster Schritt.
JCenter selbst ist ein dünnes Furnier auf Maven Central. Es überträgt es (mehr oder weniger erfolgreich) und fügt zusätzliche Komponenten hinzu. Beide werden in CDN-Netzwerken gehostet und sind leistungsstark. Maven Central selbst ist das Ziel für alle Eclipse-, Apache- und die meisten anderen Open Source-Projekte. Ohne Maven Central wäre JCenter größtenteils leer.
Die Verwendung einer der beiden Methoden funktioniert einwandfrei, aber ich würde empfehlen, direkt zur Quelle zu gehen, wo Sie können, und darüber hinaus mithilfe eines Repository-Managers die Kontrolle darüber zu übernehmen. Nexus Open Source zum Beispiel ist kostenlos und unterstützt Maven-Repositorys, wie sie von Maven, Gradle, SBT, Ivy und anderen verwendet werden, sowie NuGet-, NPM- und RubyGems-Unterstützung.
Haftungsausschluss: Ich bin Autor von Repository Management mit Nexus und Nexus Trainer für Sonatype, dem Sponsor des kostenlosen Central Repository, dem Projektleiter des Android Maven Plugins, und habe einige Android-Bibliotheken durch Neuerstellung von AOSP auf Central übertragen.
quelle
http://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/de
Dieser Artikel kann Ihre Frage beantworten.
quelle