Android studio 不允许在使用标准Gradle生命周期插件时声明自定义“清理”任务

Android studio 不允许在使用标准Gradle生命周期插件时声明自定义“清理”任务,android-studio,gradle,plugins,Android Studio,Gradle,Plugins,我正在向jCenter添加一个库,为此我需要向项目的build.gradle文件中添加一些插件。然而,我得到了错误 不允许在使用标准Gradle生命周期插件时声明自定义“清理”任务 我可以看到任务清理块,当我删除它时,错误消失了。我想这就是我所需要做的,但它以前做过重要的事情吗?如果我在某个时候删除插件而忘记重新添加干净的块,会有什么可怕的后果 buildscript { repositories { jcenter() } dependencies {

我正在向jCenter添加一个库,为此我需要向项目的build.gradle文件中添加一些插件。然而,我得到了错误

不允许在使用标准Gradle生命周期插件时声明自定义“清理”任务

我可以看到任务清理块,当我删除它时,错误消失了。我想这就是我所需要做的,但它以前做过重要的事情吗?如果我在某个时候删除插件而忘记重新添加干净的块,会有什么可怕的后果

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
}

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

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

clean {
    delete rootProject.buildDir
}
但是首先检查这是否不是clean任务的默认行为

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

task customClean(type: Delete) {
    delete rootProject.buildDir
}
clean.dependsOn customClean
工具>kotlin>在项目中配置您必须选择Android Gradle而不是Gradle


从代码中删除这些行

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
    }
}
需要这样做:

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

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

task clean(type: Delete) {
    delete rootProject.buildDir
}
6米 好的,我在Gradle中得到一个错误,它无法清理根项目文件

:25 AM Gradle sync失败:不允许在使用标准Gradle lifecycle插件时声明自定义“清理”任务

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

Clean触发器nom运行Clean dependsOnnpmInstall

在Gradle doc 4.7中 执行构建的目录中的项目也进行了配置,但只有在没有任何任务的情况下执行Gradle时才进行配置。这样,在按需配置项目时,默认任务的行为就正确了

按需配置Gradle 4.6 适用于Gradle 3.01或3.1.0及Gradle的Android插件 渐变属性文件 org.gradleconfigureondemand=false

所以我所做的就是把任务注释干净,现在我得到了一个构建

我认为,如果您构建并修改了项目,那么这个脚本就可以工作。 当您下载项目时,您还没有第一次构建它。因此,没有根项目路径可以清理,因为它从未被构建过。这导致它失败。 通过在第一次没有得到错误的时候注释出来

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

`构建脚本{ 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

} */

'
}

如果在build.gradle中添加了maven,请签出所有括号。代码应如上所述。它应该能解决问题。支架可能放置在不同的位置

在给定代码中:

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 delete(type: Delete) {
    delete rootProject.buildDir`
}
}
经过这么多的研究,我发现我们只需对bulid.gradleProject中的清洁任务进行如下评论:



查看链接。它解释了一切。这肯定会有帮助的@Suragch我在使用com.github.dcendents.android-maven时遇到了同样的问题,你是如何解决这个问题的?@Nainal,我想当时我刚刚删除了干净的块。不过,我不认为这是解决办法,而且我从来没有感觉到我理解了这个问题,也没有感觉到如何正确地解决它。@Suragh ThanksI也有同样的问题,我没有试图推翻任何东西。它在Android Studio生成的Gradle脚本中,不会降低我的答案的有效性。将生成的脚本更改为有效,并作为bug跟踪器投诉。@Vampire,您完全正确。谢谢你的洞察力。仍然需要弄清楚为什么开箱即用的Android应用程序会将任务添加到clean中…我不明白。这与自定义清理任务有什么关系?您是否收到以下错误:错误:24,不允许0在使用标准Gradle生命周期插件时声明自定义“clean”任务。我在使用Gradle在项目中配置kotlin时遇到上述错误,在使用Android使用Gradle编译时也没有遇到该错误此问题是为kotlin pluginI获得的,而不是使用kotlin,但也许你的答案可以帮助其他人。为什么一开始就有这样的答案?移除它有任何负面的副作用吗?在我的情况下,没有负面影响发生谢谢you@ChaudharyNouman. 我不明白背后的逻辑。因为我以前添加kotlin时会自动添加gradle文件。请让我know@Peter. 因为Gradle支持自动下载和配置依赖项。task delete和task clean之间有什么区别吗?这并没有回答问题,而是说明了如何计算出哪个OP,因此:我可以看到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 delete(type: Delete) {
    delete rootProject.buildDir`
}
}
//    task clean(type: Delete) {
//        delete rootProject.buildDir
//    }][1][enter image description here][1]