Не удалось найти метод leftShift() для аргументов после обновления студии 3.4

После обновления студии 3.4 и версии Gradle до 5.1.1 я получил ошибку в своей задаче как Не удалось найти метод leftShift()

Мое задание:

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

Я получил ошибку для оператора сдвига влево << в строке.

Как решить эту ошибку?

<< устарело в 4.x и удалено в 5.0

aashima 12.05.2019 16:24

У меня такая же ошибка 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.. Не получая, где на самом деле я должен измениться.

Ajay Mehta 27.06.2019 07:46

в вашем build.gradle проверьте любую задачу, которую вы создали

Bhuvanesh BS 27.06.2019 16:24
129
3
80 662
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Чтобы устранить эту ошибку, замените << на 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

где это? какой файл?

Akanshi Srivastava 24.06.2019 12:15

в build.gradle

Bhuvanesh BS 25.06.2019 10:23

@BhuvaneshBS Где это печатается?

Bharath Kumar 12.07.2019 11:23

В Терминале во время выполнения задачи

Bhuvanesh BS 13.07.2019 14:03

У меня нет задачи или << все еще сталкиваюсь с проблемой, кто-нибудь может помочь?

Deepak Rajput 06.09.2019 07:31

@DeepakRajput, ты нашел какое-нибудь решение? у меня та же проблема

Muhammad Zahab Ahmad Khan 26.02.2020 12:42

Gradle принимает task incrementBetaVersion doLast { .... } Это то же самое, что и task incrementBetaVersion { doLast { .... } }?

Andz 26.05.2020 14:10

У меня была эта ошибка в проекте 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
    }
}

Ссылка 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.

Это произошло из-за того, что оператор 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
   }
}

Другие вопросы по теме