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?

Ben Kemp
quelle
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

Zhouji
quelle
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")
}
石 塚 祐 輔
quelle
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")
    }
Markroxor
quelle
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

Shubham
quelle
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 
HolyM
quelle
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.

Aramis NSR
quelle
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.

Seb Charrot
quelle