A última vez que usei o Android Studio, ele gerou .gradle
arquivos com mavencentral()
repositórios buildscript, enquanto agora existe jcenter()
.
Alguém poderia explicar os problemas relacionados a isso. Existem outros acordos de recompra? Quando devemos trocá-los? Qual o impacto que eles têm em projetos, módulos, bibliotecas? Quaisquer outros itens essenciais para desenvolvedores do Android?
Quem é responsável por manter esses compromissos?
Respostas:
Na Bintray, acabei de publicar um post muito detalhado descrevendo os motivos pelos quais o Google fez essa alteração. Aqui estão os pontos mais importantes:
jcenter()
é um superconjunto demavenCentral()
, que abrange muitos repositórios e artefatos adicionais.Em relação às melhorias de desempenho, alguns defensores dos desenvolvedores de Android enfrentaram / notaram o problema da enorme indexação com o maven central.
Nas palavras de Tor Norbye :
Além disso, você pode achar interessante essa discussão muito curta (1T e 1A) sobre o Hacker News .
Estou com a JFrog , a empresa por trásbandeja e artefato, consulte meu perfil para obter detalhes e links.
fonte
Eu estava pensando o mesmo, e não tenho uma resposta definitiva, mas achei que poderia valer a pena compartilhar o que (pouco) eu aprendi. Encontrei menção da mudança do Maven Central para o JCenter em um problema no Google Code , mas não localizei detalhes exatamente quando isso aconteceu - não consegui encontrar menção na lista de alterações recentes do Android Studio.
Desde a leitura no JCenter, é o repositório por trás da Bintray, da empresa JFrog (com quem já me deparei antes, e acho que é daí que vem o 'J'). De acordo com o blog da Bintray, a Bintray é um superconjunto do Maven Central ; portanto, se isso é verdade, não deve haver problemas com dependências ausentes, mas acho que vai depender exatamente do que você está usando em seus projetos - você sempre pode diretamente verifique os repositórios, pois ambos têm sites agradáveis e facilmente pesquisáveis. Portanto, para quem mantém esses repositórios, como eu sei, cabe aos produtores das dependências adicionar suas dependências a cada repositório e ao proprietário do repositório apenas para manter o serviço.
Em termos de quando mudar, é difícil resolver. Acho que o AOSP ainda está usando o Maven Central (ao procurar em Modelos para novos aplicativos Android), mas esse modelo também ainda está usando uma versão Gradle (0.4) muito antiga. Existem alguns problemas em relação a outros que têm problemas com as dependências do jcenter, mas não há muitos relatórios, e é possível que o Google mude novamente para outro repo antes de lançar o AS final. Se o Maven Central ainda estiver funcionando bem para você por enquanto, você poderá adiar a troca até então, especialmente se estiver criando grandes soluções comerciais.
fonte
Não importa qual seja o padrão no arquivo build.gradle - em um esforço de desenvolvimento baseado em equipe, você realmente deve usar um gerenciador de repositório como o Sonatype Nexus ou o JFrog Artifactory e não referenciar esses repositórios upstream diretamente.
Isso permitirá que você economize muita largura de banda, combine ambos e muitos outros repositórios e gerencie tudo em sua própria rede.
Em termos de Maven Central vs JCenter. O JCenter é um esforço do JFrog para abraçar, estender (e exterminar?) O Maven Central. O Maven Central é o repositório padrão no Maven, SBT e outros, enquanto o Gradle mudou para o JCenter. Isso não surpreende, considerando que o JFrog e o Gradleware trabalham juntos como empresas. Como o SDK do Android usa o Gradle como sistema de compilação agora, a mudança para o JCenter foi o próximo passo lógico.
O JCenter em si é um revestimento fino em cima do Maven Central. Ele o proxies (com mais ou menos sucesso) e adiciona componentes adicionais. Ambos estão hospedados em redes CDN e têm alto desempenho. O Maven Central em si é o alvo de todos os projetos de código aberto do Eclipse, Apache e da maioria dos outros aplicativos de código aberto, e sem ele o JCenter ficaria praticamente vazio.
O uso de qualquer um deles funcionará bem, mas eu sugiro ir direto à fonte onde você puder e, além disso, assumir o controle usando um gerenciador de repositório. O Nexus Open Source, por exemplo, é gratuito e tem suporte para repositórios Maven, usados por Maven, Gradle, SBT, Ivy e outros, além do NuGet, NPM e RubyGems.
Isenção de responsabilidade: eu sou o autor do Repository Management with Nexus e do Nexus trainer da Sonatype, o patrocinador do Central Repository gratuito, o líder do projeto do Android Maven Plugin e levei algumas bibliotecas Android para a Central, reconstruindo a partir do AOSP.
fonte
http://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en
Este artigo pode responder sua pergunta.
fonte