Task 'Wrapper' kann nicht hinzugefügt werden, da eine Task mit diesem Namen bereits vorhanden ist


110

Bei der Installation von 'react-native init AwesomeProject' wird folgende Fehlermeldung angezeigtreact-native run-android :

Could not determine java version from '11.0.1'.

Ein kurzer Blick auf Google schlägt vor, dass ich das distributionUrlim Gradle-Wrapper aktualisieren muss . Nachdem ich dies getan habe, stehe ich vor einem neuen Fehler:

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

Es deutet darauf hin, dass das Problem in der Datei enthalten ist:

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

das sieht so aus

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

Ich habe hin und her versucht herauszufinden, was dies bewirkt. Es scheint seltsam, dass etwas nicht sofort funktioniert. Steht jemand vor einem ähnlichen Problem?


4
Gibt es ein Update oder welche Antwort ist richtig? Wenn nicht, wie haben Sie es gelöst? sonst Häkchen rechts auf einer Antwort. >> :-)
— Ganeshdeshmukh

Antworten:


159

Sie können auch aktualisieren

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

zu

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

Wie

Das Überschreiben der in 4.8 veralteten integrierten Aufgaben führt jetzt zu einem Fehler.

Der Versuch, eine integrierte Aufgabe zu ersetzen, führt zu einem Fehler, der dem folgenden ähnelt:

Task 'Wrapper' kann nicht hinzugefügt werden, da eine Task mit diesem Namen bereits vorhanden ist.

Siehe den letzten Absatz von Aufgaben und Eigenschaften : https://docs.gradle.org/5.2.1/userguide/upgrading_version_4.html

und Anpassen der Wrapper-Aufgabe : https://docs.gradle.org/5.2.1/userguide/gradle_wrapper.html#customizing_wrapper


9
Diese Antwort beantwortet nicht die eigentliche Frage von OP, ist aber für Googler wie mich sehr hilfreich, daher habe ich positiv gestimmt.
— Franklin Yu

Es löst das Problem des OP. Er verwendete eine alte Gradle-Version und war dann an ein Update mit einer veralteten Lösung gebunden. Diese Antwort bietet die richtige Lösung. (Natürlich, @FranklinYu, wenn Sie "steht jemand vor einem ähnlichen Problem?" Wie die Frage des OP nehmen, dann würde ein einfaches "Ja" ausreichen.)
— Michael Piefel

91

Welche Version von Gradle verwenden Sie in Ihrer Umgebung?

Wenn Sie Gradle Version 5.x verwenden, müssen Sie den Task Wrapper wie folgt ändern.

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

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

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

Dann kam dieser Fehler. Ich kann nicht herausfinden, was ich tun soll. FEHLER: Die Methode wrapper () für Argumente [{type = class org.gradle.api.tasks.wrapper.Wrapper}, build_81gq92nveejavsi3t9efznmk8 $ _run_closure2 @ 55f5bac8] im Root-Projekt 'myproject' vom Typ org.gradle.api.ro konnte nicht gefunden werden .
— Buddha

21

Wie in den Kommentaren erwähnt, folgen Sie: https://stackoverflow.com/a/46867575/4982729 :

  1. Öffnen und bearbeiten Sie die Datei app-folder/android/gradle/wrapper/gradle-wrapper.properties. Aktualisieren Sie die Zeile

    distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip
  2. AwesomeProject/android/build.gradleVersuchen Sie in der Datei auskommentieren

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

12

Wenn die Datei "gradle-wrapper.properties" diese Codes bereits enthält

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

dann können Sie entfernen

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

von build.gradle


1

Ich habe das gleiche Problem. Das Problem in meinem Code war eine doppelte Deklaration in einer anderen Gradle-Datei in build.gradle

build.gradle

apply from: otherFile.gradle
... build. gradle code...
apply from: otherFile.gradle //Again 

0

Es besteht eine hohe Wahrscheinlichkeit, dass Sie eine "Aufgabe" in Ihrer build.gradle-Datei ausführen und die mit dem Wrapper verbundene Zeile (einschließlich der Klammer usw.) entfernen. Wenn Sie dann IntelliJ verwenden, wird das neue automatisch in Ihr Arbeitsverzeichnis gebracht.


0

Ich bin auf das Problem gestoßen, weil ich meine Aufgabe mit dem globalen Gradle und nicht mit meinem lokalen Gradle ausgeführt habe Gradle-Wrapper ausgeführt habe.

dh in meinem aktuellen Verzeichnis hatte ich eine gradlewausführbare Datei.

Aber ich habe diesen Befehl ausgeführt:

gradle <task>

Wann hätte ich laufen sollen:

./gradlew <task>

Vermutlich, weil beim Ausführen des globalen Gradles versucht wird, einen lokalen Wrapper zu erstellen - und einer bereits vorhanden war.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.