La última vez que usé Android Studio, generó .gradle
archivos con mavencentral()
repositorios de buildscript, mientras que ahora los hay jcenter()
.
¿Alguien podría explicar los problemas relacionados con esto? ¿Hay otros repositorios? ¿Cuándo deberíamos cambiarlos? ¿Qué impacto tienen en proyectos, módulos, libs? ¿Algún otro elemento esencial para los desarrolladores de Android?
¿Quién es responsable de mantener esos repositorios?
Respuestas:
En Bintray acabo de reubicar una publicación de blog muy detallada que describe las razones por las cuales Google realizó este cambio. Aquí están los puntos más importantes:
jcenter()
es un superconjunto demavenCentral()
, que abarca muchos repositorios y artefactos adicionales.Con respecto a las mejoras de rendimiento, un par de defensores de los desarrolladores de Android se habían enfrentado / notado el problema de la indexación enorme con Maven Central.
En palabras de Tor Norbye :
Además, puede encontrar interesante esta breve discusión (1T y 1A) en Hacker News .
Estoy con JFrog , la compañía detrásbandeja de basura y artefacto, vea mi perfil para más detalles y enlaces.
fuente
Me preguntaba lo mismo, y no tengo una respuesta definitiva, pero pensé que valdría la pena compartir lo (poco) que había aprendido. Encontré una mención del cambio de Maven Central a JCenter dentro de un problema en Google Code , pero no detecté detalles sobre cuándo sucedió exactamente; no pude encontrar mención en la lista de cambios recientes para Android Studio.
Al leer sobre JCenter, es el repositorio detrás de Bintray, de la compañía JFrog (con quien me he encontrado antes, y supongo que de ahí proviene la 'J'). Según el blog de Bintray, Bintray es un superconjunto de Maven Central , por lo que si eso es cierto no debería haber problemas con las dependencias faltantes, pero supongo que dependerá exactamente de lo que esté usando en sus proyectos: siempre podría revisa los repositorios ya que ambos tienen buenos sitios web fáciles de buscar Entonces, para quién mantiene estos repositorios, como mejor sé, depende de los productores de las dependencias agregar sus dependencias a cada repositorio, y hasta el propietario del repositorio solo para mantener el servicio.
En términos de cuándo cambiar, es difícil hacer ejercicio. Creo que AOSP todavía usa Maven Central (al buscar en Plantillas para una nueva aplicación de Android), pero esa plantilla también sigue usando una versión de Gradle muy antigua (0.4). Hay un par de problemas sobre otros que tienen problemas con las dependencias de jcenter, pero no se informa mucho, y es posible que Google cambie nuevamente a otro repositorio antes de lanzar AS final. Si Maven Central aún funciona bien para usted por ahora, podría retrasar el cambio hasta entonces, especialmente si está creando grandes soluciones comerciales.
fuente
No importa cuál sea el valor predeterminado en el archivo build.gradle: en un esfuerzo de desarrollo basado en equipo, realmente debería usar un administrador de repositorios como Sonatype Nexus o JFrog Artifactory y no hacer referencia a esos repositorios ascendentes directamente.
Esto le permitirá ahorrar mucho ancho de banda, combinar ambos y muchos otros repositorios y administrarlo todo en su propia red.
En términos de Maven Central vs JCenter. JCenter es un esfuerzo de JFrog para abrazar, extender (¿y exterminar?) Maven Central. Maven Central es el repositorio predeterminado en Maven, SBT y otros, mientras que Gradle ha cambiado a JCenter. Esto no es sorprendente teniendo en cuenta que JFrog y Gradleware trabajan juntos como empresas. Dado que Android SDK usa Gradle como sistema de compilación ahora, el paso a JCenter fue el siguiente paso lógico.
JCenter en sí mismo es una delgada chapa en la parte superior de Maven Central. Lo representa (más o menos exitosamente) y agrega componentes adicionales. Ambos están alojados en redes CDN y tienen un alto rendimiento. Maven Central es el objetivo de todos los proyectos de código abierto de Eclipse, Apache y la mayoría de los demás, y sin él, JCenter estaría prácticamente vacío.
Usar cualquiera de ellos funcionará bien, pero sugeriría ir directamente a la fuente donde pueda y, además, tomar el control utilizando un administrador de repositorio. Nexus Open Source, por ejemplo, es gratuito y tiene soporte para repositorios de Maven como los utilizados por Maven, Gradle, SBT, Ivy y otros, así como soporte de NuGet, NPM y RubyGems.
Descargo de responsabilidad: soy el autor de Repository Management con Nexus y Nexus Trainer para Sonatype, el patrocinador del Central Repository gratuito, el líder del proyecto del complemento Android Maven y he empujado algunas bibliotecas de Android a Central mediante la reconstrucción desde AOSP.
fuente
http://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en
Este artículo puede responder a su pregunta.
fuente