更新 studio 3.4 后找不到参数的方法 leftShift()

Could not find method leftShift() for arguments after updating studio 3.4

将工作室 3.4 和 Gradle 版本更新到 5.1.1 后,我在任务中遇到错误 Could not find method leftShift()

我的任务:

task incrementBetaVersion << {
    println("Incrementing Beta Version Number...")
    incrementVersionNumber('BetaVersionNumber')
    println("Incrementing Beta Version Number...")
    incrementVersionName('BetaVersionName')
}

我得到了行中左移运算符 << 的错误。

如何解决这个错误?

要解决此错误,请像这样将 << 更改为 doLast

task incrementBetaVersion  {
    doLast {
        println("Incrementing Beta Version Number...")
        incrementVersionNumber('BetaVersionNumber')
        println("Incrementing Beta Version Number...")
        incrementVersionName('BetaVersionName')
    }
}

左移运算符代表doLast { }.

<< was deprecated in Gradle 4.x and removed in Gradle 5.0

来自文档:

任务定义的

<< 不再有效。换句话说,你不能使用语法

task myTask << { …​ }.

改为使用 Task.doLast() 方法,如下所示:

task myTask {
    doLast {
        ...
        ...
    }
}

更多信息在这里: https://discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask/30614

https://docs.gradle.org/current/userguide/upgrading_version_4.html#changes_5.0

我在使用 MockMaker 模拟非最终 类 的 Kotlin 项目中遇到了这个错误。

解决方案是将旧语法更改为新语法:

task createTestResources {
    description = "Allows Mocking non-final classes and data classes in a Kotlin project"
    doLast {
        def mockMakerFile = new File("$projectDir/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker")
        if (System.env.MOCK_MAKER != null) {
            logger.info("Using MockMaker ${System.env.MOCK_MAKER}")
            mockMakerFile.parentFile.mkdirs()
            mockMakerFile.createNewFile()
            mockMakerFile.write(System.env.MOCK_MAKER)
        } else {
            logger.info("Using default MockMaker")
        }
    }
}

请注意,一些内容已更改,例如包含 doLast 块,并从任务签名中删除 <<。它现在对我有用。希望它也适合你:-)

只需从任务中删除“<<”并在 doLast{}

中添加您的代码

对于Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask

的解决方案
task incrementBetaVersion << {
   // your code
}

task incrementBetaVersion {
   doLast {
      // your code
    }
}

引用https://discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask/30614/2

<< (LeftShift()) operator is deprecated in 4.x Gradle and Removed in 5.x Gradle Version.

发生这种情况是因为左移运算符已被 doLast { } 取代。

<< has deprecated in 4.x and removed in 5.0 version

现在您必须更改代码:

task incrementBetaVersion << {
    println("Incrementing Beta Version Number...")
    incrementVersionNumber('BetaVersionNumber')
    println("Incrementing Beta Version Number...")
    incrementVersionName('BetaVersionName')
}

task incrementBetaVersion  {
    doLast {
        println("Incrementing Beta Version Number...")
        incrementVersionNumber('BetaVersionNumber')
        println("Incrementing Beta Version Number...")
        incrementVersionName('BetaVersionName')
    }
}

解决这个错误很简单。

只需将 << 替换为 doLast

查看下面更新的代码,今天我修复了我的 cordova Android 项目。

task cdvPrintProps {
   doLast {
       //your code
   }
}