在更新工作室3.4之后,找不到参数的方法 left Shift()

在更新工作室 3.4和 Gradle 版本到 5.1.1后,我得到了我的任务作为 找不到方法 left Shift ()的错误

我的任务是:

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

我得到了错误的左移操作员在线 <<

如何解决此错误?

88647 次浏览

要解决这个错误,将 <<改为 doLast,如下所示。

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

左移操作符代表的 doLast { }

<<在 Gradle 4. x 已被废弃,在 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

我在一个 Kotlin 项目中犯了这个错误,该项目使用 MockMaker来模拟非期末课程。

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

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块,并从任务签名中删除了 <<。现在对我有用了。希望对你也是如此: -)

只需从 Task 中删除“ < <”并在 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())操作符在4.x Gradle版本中被弃用,在5.x Gradle版本中被删除。

这是因为左偏移操作符已被 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代替 <<

见下面更新的代码,今天我在我的科尔多瓦 Android 项目修复。

task cdvPrintProps {
doLast {
//your code
}
}