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

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

Моя задача:

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

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

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

Ответы [ 4 ]

40 голосов
/ 22 апреля 2019

Чтобы устранить эту ошибку, измените << на doLast следующим образом.

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

Левый оператор shitf представляет собой doLast { }.

<< устарел в Gradle 4.x и удален в Gradle 5.0 </p>

Более подробная информация здесь: https://discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask/30614

8 голосов
/ 08 июня 2019
Оператор

<< (<code>LeftShift()) устарел в версии 4.x Gradle и удален в версии 5.x Gradle.

Для решения Could not find method leftShift() for arguments on task of type org.gradle.api.DefaultTask

Просто удалите "<<" из Задачи и добавьте метод в <code>doLast{}

Ссылка https://discuss.gradle.org/t/could-not-find-method-leftshift-for-arguments-on-task-of-type-org-gradle-api-defaulttask/30614/2

3 голосов
/ 04 июля 2019

Это происходит из-за того, что оператор 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')
    }
}
1 голос
/ 21 мая 2019

У меня была эта ошибка в проекте 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 и удаление << из подписи задачи. Это работает для меня сейчас. Надеюсь, что это подходит и для вас: -)

...