32 votes

La déclaration d'une tâche "propre" personnalisée lors de l'utilisation des plugins de cycle de vie standard de Gradle n'est pas autorisée.

Je suis en train d'ajouter une bibliothèque à jCenter et pour ce faire, j'ai dû ajouter quelques plugins au fichier build.gradle de mon projet. Cependant, j'obtiens l'erreur suivante

La déclaration d'une tâche "propre" personnalisée lors de l'utilisation des plugins de cycle de vie standard de Gradle n'est pas autorisée.

Je peux voir le task clean et lorsque je le supprime, l'erreur disparaît. Je suppose que c'est tout ce que je dois faire, mais faisait-il quelque chose d'important avant ? Si je supprime les plugins à un moment donné et que j'oublie d'ajouter le bloc clean bloquer le retour, quelles conséquences désastreuses sont en magasin ?

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

plugins {
    id "com.jfrog.bintray" version "1.7.3"
    id "com.github.dcendents.android-maven" version "1.5"
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Ce site y este cela ne répondait pas de manière satisfaisante à la question.

1 votes

Consultez le site <a href=" techusall.com/ lien</a>. Tout y est expliqué. Je suis sûr que cela vous aidera !

0 votes

@Suragch J'ai le même problème en utilisant com.github.dcendents.Android-maven, comment avez-vous résolu le problème ?

0 votes

@Nainal, je pense qu'à l'époque j'ai juste enlevé le clean bloc. Je ne pense pas que ce soit la solution, cependant, et je n'ai jamais eu l'impression de comprendre le problème ou de le résoudre correctement.

33voto

Vampire Points 515

Vous ne devez pas essayer de remplacer la valeur par défaut clean mais configurez-la plutôt pour qu'elle supprime des éléments supplémentaires tels que

clean {
    delete rootProject.buildDir
}

Mais vérifiez d'abord si ce n'est pas le comportement par défaut de la tâche de nettoyage de toute façon.

Alternativement, si vous voulez être en mesure d'effectuer une action de nettoyage spécifique individuellement, vous pouvez également définir une tâche séparée et ajouter une dépendance telle que

task customClean(type: Delete) {
    delete rootProject.buildDir
}
clean.dependsOn customClean

5 votes

J'ai le même problème et je n'ai pas essayé de remplacer quoi que ce soit. C'est dans le script de Gradle généré par Android Studio.

0 votes

Cela ne rend pas ma réponse moins valable. Modifiez le script généré pour qu'il soit valide et déposez une plainte auprès de AS bug tracker.

0 votes

@Vampire, vous avez tout à fait raison. Merci de votre perspicacité. J'ai encore besoin de comprendre l'origine de la raison pour laquelle l'application Android prête à l'emploi ajoute l'icône de l'utilisateur. task clean...

5voto

Chaudhary Nouman Points 138

Supprimez ces lignes de votre code.

task clean(type: Delete) {
    delete rootProject.buildDir
}

0 votes

Pourquoi est-ce que c'est là en premier lieu ? Sa suppression a-t-elle des effets secondaires négatifs ?

0 votes

Dans mon cas, il n'y a pas eu d'effet négatif

1 votes

Merci@ChaudharyNouman. Je ne comprends pas la logique derrière cela, car lorsque j'ai ajouté Kotlin, il a été automatiquement ajouté dans le fichier gradle.

3voto

Bharat Kumar Emani Points 1821

outils>kotlin>configure dans le projet, vous devez sélectionner Android Gradle pas gradle

It worked for me

0 votes

Je ne comprends pas. Qu'est-ce que cela a à voir avec la tâche de nettoyage personnalisé ?

0 votes

Vous obtenez cette erreur : Error :(24, 0) Declaring custom 'clean' task when using the standard Gradle lifecycle plugins is not allowed.

0 votes

J'ai obtenu l'erreur ci-dessus lorsque j'ai configuré kotlin dans le projet avec Gradle et lorsque j'ai compilé avec Android avec Gradle, je n'ai pas obtenu cette erreur.

3voto

Laksh Points 31

Dans le code donné :

allprojects {
repositories {
    google()
    jcenter()
    mavenCentral()
}

tasks.withType(JavaCompile) {
    sourceCompatibility = "1.8"
    targetCompatibility = "1.8"
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
}

remplacer le task clean con task delete alors cela fonctionnera :

allprojects {
repositories {
    google()
    jcenter()
    mavenCentral()
}

tasks.withType(JavaCompile) {
    sourceCompatibility = "1.8"
    targetCompatibility = "1.8"
}

task delete(type: Delete) {
    delete rootProject.buildDir`
}
}

0 votes

Y a-t-il une différence entre les task delete y task clean ?

2voto

BlackHatSamurai Points 6211

J'ai eu ce même problème, malheureusement, pour moi j'ai mis le task clean au mauvais endroit. J'avais ça :

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }

    tasks.withType(JavaCompile) {
        sourceCompatibility = "1.8"
        targetCompatibility = "1.8"
    }

    task clean(type: Delete) {
        delete rootProject.buildDir
    }
}

Ce qui devait être ça :

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }

    tasks.withType(JavaCompile) {
        sourceCompatibility = "1.8"
        targetCompatibility = "1.8"
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X