宣布定制'清洁'不允许使用标准Gradle生命周期插件时的任务

时间:2017-05-12 08:55:11

标签: android-studio gradle plugins

我正在向jCenter添加一个库,所以我需要在项目的build.gradle文件中添加一些插件。但是,我收到了错误

  

宣布定制'清洁'不允许使用标准Gradle生命周期插件时的任务。

我可以看到task clean块,当我删除它时,错误消失了。我认为这就是我需要做的一切,但它之前是否做过重要的事情?如果我有时删除插件并忘记重新添加clean块,那会有什么可怕的后果?

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
}

Thisthis这并没有令人满意地回答这个问题。

8 个答案:

答案 0 :(得分:31)

您不应该尝试覆盖默认的clean任务,而是将其配置为删除其他内容,例如

clean {
    delete rootProject.buildDir
}

但首先检查这是否不是干净任务的默认行为。

或者,如果您希望能够单独执行特定的清理操作,还可以定义单独的任务并添加依赖项,例如

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

答案 1 :(得分:6)

从代码中删除这些行。

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

答案 2 :(得分:3)

项目中的

工具> kotlin>配置您必须选择 Android Gradle 而不是gradle

It worked for me

答案 3 :(得分:3)

在给定的代码中:

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

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


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

task clean替换为task delete,它将起作用:

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

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


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

答案 4 :(得分:2)

我有同样的问题,不幸的是,我把task clean放在了错误的地方。我有这个:

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

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


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

需要这样:

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

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

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

答案 5 :(得分:0)

enter code hereallprojects {
repositories {
    google()
    jcenter()
    maven {
        url 'https://maven.google.com'
    }
}

}

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

如果您已在“ build.gradle”中添加了maven,则请检查所有括号。代码应如上所述。它应该解决问题。括号可能放置在不同的位置。

答案 6 :(得分:0)

经过如此多的研究,我发现我们不得不对bulid.gradle(Project)中的干净任务行进行注释,如下所示:

//    task clean(type: Delete) {
//        delete rootProject.buildDir
//    }][1][enter image description here][1]

See the image for hint

答案 7 :(得分:-1)

6米 好的,我在Gradle中收到错误,它无法清除根项目文件。

:25 AM Gradle sync失败:不允许在使用标准Gradle生命周期插件时声明自定义“干净”任务。

错误代码 info-ide.actionsShowFilePathAction退出代码1

Clean Triggers nom run clean依赖于“npmInstall”

在Gradle doc 4.7中 执行Build的目录中的Project也已配置,但仅在没有任何任务的情况下执行Gradle时。这样,在按需配置项目时,默认任务就会正常运行。

按需配置Gradle 4.6 Gradle 3.01的Android插件或Gradle的3.1.0 Gradle属性文件 org.gradleconfigureondemand =假

所以我所做的就是将任务清理干净,现在我得到了一个构建单词,

我认为发生的事情是,如果您构建并修改了项目,此脚本将起作用。 下载项目时,您还没有第一次构建它。因此,没有根项目路径可以清理,因为它从未构建过。这导致它失败。 通过在第一次没有收到错误时将其注释掉。

这是代码。 //顶级构建文件,您可以在其中添加所有子项目/模块共有的配置选项。

`buildscript {          ext.kotlin_version ='1.2.41'

     ext.support_version = '26.1.0'

repositories {
    google()
    jcenter()
}

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.2'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: ‘kotlin’

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

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

} */

'