Impossible d'ajouter la tâche «wrapper» car une tâche avec ce nom existe déjà

112

Lors de l'installation de 'react-native init AwesomeProject', j'obtiens cette erreur lorsque je lance react-native run-android:

Could not determine java version from '11.0.1'.

Un rapide google suggère que je dois mettre à jour le distributionUrldans le Gradle-wrapper. Après avoir fait cela, je suis confronté à une nouvelle erreur:

Cannot add task 'wrapper' as a task with that name already exists.

Cela suggère que le problème se trouve dans le fichier:

/AwesomeProject/android/build.gradle' line: 36

qui ressemble à ça

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

J'ai essayé de comprendre ce que cela faisait. Il semble étrange que quelque chose ne fonctionne pas tout de suite. Quelqu'un est-il confronté à un problème similaire?

Ben Kemp
la source
4
y a-t-il une mise à jour ou quelle est une réponse correcte? Si non, comment l'avez-vous résolu? autre icône coche-droite sur une réponse. >> :-)
ganeshdeshmukh

Réponses:

160

Vous pouvez également mettre à jour

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'    
    distributionUrl = distributionUrl.replace("bin", "all")
}

à

wrapper {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

Comme

Le remplacement des tâches intégrées obsolètes dans 4.8 génère désormais une erreur.

Tenter de remplacer une tâche intégrée produira une erreur similaire à la suivante:

Impossible d'ajouter la tâche «wrapper» car une tâche portant ce nom existe déjà.

voir le dernier paragraphe de Tâches et propriétés : https://docs.gradle.org/5.2.1/userguide/upgrading_version_4.html

et Personnalisation de la tâche Wrapper : https://docs.gradle.org/5.2.1/userguide/gradle_wrapper.html#customizing_wrapper

zhouji
la source
9
Cette réponse ne répond pas à la question réelle d'OP, mais elle est très utile pour les googleurs comme moi, alors j'ai voté pour.
Franklin Yu
Cela résout le problème du PO. Il utilisait une ancienne version de Gradle, puis lié à la mise à jour en utilisant une solution obsolète, et cette réponse fournit la bonne solution. (Bien sûr, @FranklinYu, si vous prenez "quelqu'un est-il confronté à un problème similaire?" Comme question du PO, alors un simple "oui" suffirait.)
Michael Piefel
91

quelle version de gradle utilisez-vous dans votre environnement?

Si vous utilisez la version 5.x de gradle, vous devez modifier 「wrapper de tâches」 comme ci-dessous.

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

wrapper {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}
石 塚 祐 輔
la source
Puis cette erreur est survenue. Je ne sais pas quoi faire. ERREUR: Impossible de trouver la méthode wrapper () pour les arguments [{type = class org.gradle.api.tasks.wrapper.Wrapper}, build_81gq92nveejavsi3t9efznmk8 $ _run_closure2 @ 55f5bac8] sur le projet racine 'myproject' de type org.gradle.api.api .
buddhiv
21

Comme mentionné dans les commentaires suivent - https://stackoverflow.com/a/46867575/4982729 :

  1. Ouvrez et modifiez le fichier app-folder/android/gradle/wrapper/gradle-wrapper.properties; mettre à jour la ligne

    distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip
  2. Dans le fichier, AwesomeProject/android/build.gradleessayez de commenter

    task wrapper(type: Wrapper) {
        gradleVersion = '4.4'
        distributionUrl = distributionUrl.replace("bin", "all")
    }
Markroxor
la source
12

si le fichier "gradle-wrapper.properties" a déjà ces codes

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

alors vous pouvez supprimer

task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

depuis build.gradle

Shubham
la source
1

J'ai le même problème. le problème dans mon code était une double déclaration sur un autre fichier Gradle dans build.gradle

build.gradle

apply from: otherFile.gradle
... build. gradle code...
apply from: otherFile.gradle //Again 
HolyM
la source
0

Il y a de fortes chances que vous ayez une "tâche" à exécuter dans votre fichier build.gradle, supprimez la ligne relative au wrapper (y compris sa parenthèse et ainsi de suite). Ensuite, si vous utilisez IntelliJ, il amènera automatiquement le nouveau dans votre répertoire de travail.

Aramis NSR
la source
0

J'ai rencontré le problème car j'exécutais ma tâche en utilisant le gradle global , et non mon fichier local wrapper de gradle .

c'est-à-dire que dans mon répertoire actuel j'avais un gradlew exécutable.

Mais j'exécutais cette commande:

gradle <task>

Quand j'aurais dû courir:

./gradlew <task>

Vraisemblablement parce que l'exécution du gradle global tente de créer un wrapper local - et il en existait déjà un.

Seb Charrot
la source