58
votes

Dépréciation JCenter; Impact sur Gradle et Android

Dois-je m'inquiéter de jCenter qui est obsolète?

Pourquoi devrais-je migrer mes bibliothèques de JCenter vers d'autres référentiels Maven?

Puis-je continuer à utiliser jCenter () dans mon script Gradle Build?


1 commentaires

8 Réponses :


30
votes

Veuillez voir la nouvelle réponse .

Résumé: Après le 1er février, 2022 JCenter () ne fonctionnera plus.

Selon cet article de blog gradle :

gradle 7.0 va déprécier l'utilisation de jCenter () pour résoudre les dépendances.
Vous pourrez toujours utiliser jCenter comme référentiel, mais Gradle émettra un avertissement.
La méthode jCenter () sera supprimée dans la prochaine version majeure.

Gradle n'a pas de lien inhérent à jCenter ou Maven Central , vous pouvez donc toujours passer à tout autre référentiel de votre choix.

Et selon développeurs Android :

jfrog, la société qui maintient le référentiel artefact JCenter utilisé par de nombreux projets Android, ont récemment annoncé la dépréciation et La retraite à venir de jCenter .
Selon l'annonce , JCenter permettra les téléchargements d'artefacts existants jusqu'au 1er février 2022.

Les développeurs qui publient des artefacts sur jCenter devraient commencer à migrer des packages à un nouvel hôte, comme Maven Central .

Alors, assurez-vous simplement que les auteurs fournissent leur bibliothèque dans d'autres référentiels, puis mettent à jour vos scripts de construction pour permettre le téléchargement à partir de ces référentiels.
Par exemple, dans Gradle Use mavencentral () pour permettre d'obtenir des dépendances du référentiel central Maven.


1 commentaires

Mauvais. "Le 1er mai 2021 Les services de bintray ne seront plus disponibles. GOCENTER, et les services ChartCenter ne seront plus disponibles pour les clients non artificiels. (Conopenter et JCenter ne sont pas affectés)." et "MISE À JOUR 27/04/2021: Nous avons écouté la communauté et garderons JCenter comme un référentiel en lecture seule indéfiniment. Nos clients et la communauté peuvent continuer à compter sur JCenter comme un miroir fiable pour les packages Java."



2
votes

En fait, les développeurs doivent porter leurs bibliothèques sur Maven ou Google. Dans ce cas, JCenter () peut être retiré de Gradle.

Un problème se produit lorsque les anciennes bibliothèques ne sont plus maintenues ou que les développeurs sont retirés.

Il n'y a que deux possibilités:

a) Recherche, par exemple dans maven pour une bibliothèque similaire.

b) Téléchargez le code source correspondant à partir de GitHub et créez votre propre bibliothèque locale à partir de celui-ci.

à partir de 2022-02-01 JCenter est définitivement en baisse.


2 commentaires

Avez-vous des conseils sur l'option B? Je programme pour un scanner de code-barres qui exécute Android et je suis déjà sûr que les développeurs du fabricant seront en retard à cette fête.


Une autre réponse contredit la déclaration dans le dernier paragraphe.



83
votes

Remplacer

mavenCentral()

par ceci:

jcenter()


2 commentaires

Notez que la bibliothèque doit être disponible sur le référentiel Maven Central. Sinon, remplacer le simple jCenter () par mavencentral () ne fera aucun bien.


@Mahozad true, dans certains cas, nous devrons aller sur le site du développeur et copier la ligne maven qui ressemble généralement à ceci: maven {url 'https://my.library-url.com/'} < / code>





4
votes

vous devez modifier xxx

avec

repositories {
    mavenCentral()
    maven {
        url = "https://repo1.maven.org/maven2/"
    }
    maven {
        url "https://repo.spring.io/release"
    }
    maven {
        url "https://repository.jboss.org/maven2"
    }
    maven {
        url 'https://repo.jenkins-ci.org/public/'
    }
}

De plus, vous devez définir une ou plusieurs URL du référentiel:

xxx pre>


3 commentaires

Merci. Après de nombreuses autres réponses, celle-ci a fonctionné - probablement parce qu'elle a les miroirs corrects qui ont les anciennes versions des dépendances que mon projet utilise toujours. Je veux seulement que cela fonctionne. Je ne peux pas tout mettre à niveau ...


Mavencentral reflète-t-il un JCenter entier?


@reducingActivity: oui ça devrait être



1
votes

Dans mon cas, j'ai suivi ces étapes pour le faire:

  • Placer mavencentral () avant JCenter ()
  • Améliorer Gradle à l'aide de l'assistant de mise à niveau du studio Android (dans mon cas mis à niveau vers 7.0.3)
  • Installez NDK (côte à côte) via les plugins (Android Studio)
  • Projet de nettoyage et de reconstruction

  • 0 commentaires

    0
    votes

    J'ai tout essayé mais rien n'a fonctionné, puis ajouter un nouveau référentiel maven à la main et maintenant ça marche.

    repositories {
     // ...
     maven { url 'https://repo.gradle.org/gradle/libs-releases/' }
    }
    


    0 commentaires