No se puede agregar la tarea ‘envoltura’ porque ya existe una tarea con ese nombre

4 minutos de lectura

avatar de usuario
ben kemp

Al instalar ‘react-native init AwesomeProject’ Me sale este error cuando ejecuto react-native run-android:

Could not determine java version from '11.0.1'.

Un google rápido sugiere que necesito actualizar el distributionUrl en el envoltorio de Gradle. Habiendo hecho esto, me enfrento a un nuevo error:

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

Sugiere que el problema está en el archivo:

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

que se parece a esto

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

He estado de un lado a otro tratando de averiguar qué hace esto. Parece extraño que algo no funcione directamente de la caja. ¿Alguien está enfrentando un problema similar?

  • ¿Hay alguna actualización o cuál es una respuesta correcta? Si no, ¿cómo lo resolviste? de lo contrario, marque el ícono derecho en una respuesta.>> 🙂

    – GD- Ganesh Deshmukh

    8 de marzo de 2019 a las 13:05

avatar de usuario
zhouji

También puedes actualizar

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

a

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

Como

La anulación de tareas integradas obsoletas en 4.8 ahora produce un error.

Intentar reemplazar una tarea integrada generará un error similar al siguiente:

No se puede agregar la tarea ‘envoltura’ porque ya existe una tarea con ese nombre.

ver el último párrafo de Tareas y propiedades:
https://docs.gradle.org/5.2.1/userguide/upgrading_version_4.html

y Personalización de la tarea Wrapper:
https://docs.gradle.org/5.2.1/userguide/gradle_wrapper.html#customizing_wrapper

  • Esta respuesta no responde a la pregunta real de OP, pero es muy útil para los Googlers como yo, así que voté a favor.

    -Franklin Yu

    27 de febrero de 2019 a las 22:49

  • Resuelve el problema del OP. Estaba usando una versión antigua de Gradle y luego la vinculó para actualizar usando una solución obsoleta, y esta respuesta proporciona la solución correcta. (Por supuesto, @FranklinYu, si toma “¿alguien enfrenta un problema similar?” como la pregunta del OP, entonces un simple “sí” sería suficiente).

    – Michael Piefel

    18 de noviembre de 2019 a las 9:48

¿Qué versión de gradle usas en tu entorno?

Si usa la versión 5.x de gradle, debe modificar el 「contenedor de tareas」 como se muestra a continuación.

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

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

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

  • Entonces vino este error. No puedo averiguar qué hacer. ERROR: no se pudo encontrar el método wrapper() para los argumentos [{type=class org.gradle.api.tasks.wrapper.Wrapper}, build_81gq92nveejavsi3t9efznmk8$_run_closure2@55f5bac8] en el proyecto raíz ‘myproject’ de tipo org.gradle.api.Project.

    – Buddhiv

    30 de junio de 2019 a las 16:14

si el archivo “gradle-wrapper.properties” ya tiene estos códigos

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

entonces puedes quitar

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

de build.gradle

  • pero en este caso no puedes usar ./gradle task desde la terminal

    – usuario924

    3 de marzo de 2021 a las 11:57

avatar de usuario
markroxor

Como se menciona en los siguientes comentarios: https://stackoverflow.com/a/46867575/4982729:

  1. Abre y edita el archivo. app-folder/android/gradle/wrapper/gradle-wrapper.properties; actualizar la línea

    distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip
    
  2. En archivo AwesomeProject/android/build.gradle intenta comentar

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

Tengo el mismo problema. el problema en mi código era una declaración doble en otro archivo Gradle en build.gradle

construir.gradle

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

avatar de usuario
Aramis NSR

Existe una gran posibilidad de que tenga una “tarea” para ejecutar en su archivo build.gradle, vaya y elimine la línea relacionada con el envoltorio (incluido su paréntesis, etc.). Luego, si está utilizando IntelliJ, traerá automáticamente el nuevo a su directorio de trabajo.

avatar de usuario
seb charrot

Me encontré con el problema porque estaba ejecutando mi tarea usando el global gradle, y no mi local envoltura gradle.

es decir, en mi directorio actual tenía un gradlew ejecutable.

Pero estaba ejecutando este comando:

gradle <task>

Cuando debería haber estado corriendo:

./gradlew <task>

Presumiblemente porque ejecutar gradle global intenta crear un contenedor local, y uno ya existía.

¿Ha sido útil esta solución?