Tidak dapat menambahkan 'pembungkus' tugas karena tugas dengan nama tersebut sudah ada


112

Saat menginstal 'react-native init AwesomeProject' saya mendapatkan kesalahan ini ketika saya menjalankan react-native run-android:

Could not determine java version from '11.0.1'.

Google cepat menyarankan saya perlu memperbarui distributionUrldalam Gradle-wrapper. Setelah melakukan ini, saya dihadapkan pada kesalahan baru:

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

Ini menunjukkan bahwa masalahnya ada di file:

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

yang terlihat seperti ini

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

Saya telah bolak-balik mencoba mencari tahu apa fungsinya. Tampaknya aneh bahwa ada sesuatu yang tidak akan langsung berfungsi begitu saja. Apakah ada yang menghadapi masalah serupa?


4
apakah ada pembaruan atau mana jawaban yang benar? Jika tidak, lalu bagaimana Anda menyelesaikannya? lain, centang ikon kanan pada jawaban. >> :-)
ganeshdeshmukh

Jawaban:


160

Anda juga dapat memperbarui

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

untuk

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

Sebagai

Mengganti tugas built-in yang tidak digunakan lagi di 4.8 sekarang menghasilkan error.

Mencoba mengganti tugas bawaan akan menghasilkan kesalahan yang mirip dengan berikut ini:

Tidak dapat menambahkan 'pembungkus' tugas karena tugas dengan nama tersebut sudah ada.

lihat paragraf terakhir Tugas & properti : https://docs.gradle.org/5.2.1/userguide/upgrading_version_4.html

dan Menyesuaikan tugas Wrapper : https://docs.gradle.org/5.2.1/userguide/gradle_wrapper.html#customizing_wrapper


9
Jawaban ini tidak menjawab pertanyaan OP yang sebenarnya, tetapi sangat membantu untuk Googler seperti saya, jadi saya memberi suara positif.
Franklin Yu

Itu memecahkan masalah OP. Dia menggunakan versi Gradle kuno dan kemudian terikat ke pembaruan menggunakan solusi yang sudah ketinggalan zaman, dan jawaban ini memberikan solusi yang tepat. (Tentu saja, @FranklinYu, jika Anda menganggap "apakah ada yang menghadapi masalah serupa?" Sebagai pertanyaan OP, maka "ya" yang sederhana sudah cukup.)
Michael Piefel

91

versi gradle mana yang Anda gunakan di lingkungan Anda?

Jika Anda menggunakan gradle versi 5.x Anda harus memodifikasi 「pembungkus tugas」 seperti di bawah ini.

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

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

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

Kemudian kesalahan ini datang. Tidak tahu apa yang harus dilakukan. KESALAHAN: Tidak dapat menemukan metode wrapper () untuk argumen [{type = class org.gradle.api.tasks.wrapper.Wrapper}, build_81gq92nveejavsi3t9efznmk8 $ _run_closure2 @ 55f5bac8] pada proyek root 'myproject' jenis org.gradle.api.Project .
buddhiv

21

Seperti yang disebutkan dalam komentar ikuti - https://stackoverflow.com/a/46867575/4982729 :

  1. Buka dan edit file app-folder/android/gradle/wrapper/gradle-wrapper.properties; perbarui baris

    distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip
  2. Dalam file, AwesomeProject/android/build.gradlecoba beri komentar

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

12

jika file "gradle-wrapper.properties" sudah memiliki kode ini

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

lalu Anda bisa menghapusnya

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

dari build.gradle


1

Saya memiliki masalah yang sama. masalah dalam kode saya adalah deklarasi ganda pada file Gradle lain di build.gradle

build.gradle

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

0

Ada kemungkinan besar Anda memiliki "tugas" untuk dijalankan di file build.gradle Anda, buka dan hapus baris yang terkait dengan wrapper (termasuk braketnya dan sebagainya). Kemudian, jika Anda menggunakan IntelliJ, itu secara otomatis akan membawa yang baru ke direktori kerja Anda.


0

Saya mengalami masalah ini karena saya menjalankan tugas menggunakan gradle global , dan bukan pembungkus gradle lokal saya .

yaitu di direktori saya saat ini, saya memiliki gradlewfile yang dapat dieksekusi.

Tapi saya menjalankan perintah ini:

gradle <task>

Kapan saya seharusnya berlari:

./gradlew <task>

Agaknya karena menjalankan gradle global mencoba membuat pembungkus lokal - dan pembungkus sudah ada.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.