После обновления студии 3.4 и версии Gradle до 5.1.1 я получил ошибку в своей задаче как Не удалось найти метод leftShift()
Мое задание:
task incrementBetaVersion << {
println("Incrementing Beta Version Number...")
incrementVersionNumber('BetaVersionNumber')
println("Incrementing Beta Version Number...")
incrementVersionName('BetaVersionName')
}
Я получил ошибку для оператора сдвига влево << в строке.
Как решить эту ошибку?
У меня такая же ошибка ERROR: Could not find method leftShift() for arguments [android_release_aar_8aaffqenud6qsg8w8hrovmfvc$_run_closure7@23b31b41] on task ':XXXapi:generateRelease' of type org.gradle.api.DefaultTask.. Не получая, где на самом деле я должен измениться.
в вашем build.gradle проверьте любую задачу, которую вы создали
Чтобы устранить эту ошибку, замените << на 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
где это? какой файл?
в build.gradle
@BhuvaneshBS Где это печатается?
В Терминале во время выполнения задачи
У меня нет задачи или << все еще сталкиваюсь с проблемой, кто-нибудь может помочь?
@DeepakRajput, ты нашел какое-нибудь решение? у меня та же проблема
Gradle принимает task incrementBetaVersion doLast { .... } Это то же самое, что и task incrementBetaVersion { doLast { .... } }?
У меня была эта ошибка в проекте 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 и удаление << из подписи задачи. Теперь это работает для меня. Надеюсь, у вас тоже :-)
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
}
}
<< (
LeftShift()) operator is deprecated in 4.xGradleand Removed in 5.xGradleVersion.
Это произошло из-за того, что оператор Left Shift был заменен на 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-проекте Cordova.
task cdvPrintProps {
doLast {
//your code
}
}
<< устарело в 4.x и удалено в 5.0