Gradle .execute метод, показывающий ошибку после обновления gradle - PullRequest
2 голосов
/ 30 мая 2019

Мой проект работал отлично с версией плагина gradle 3.0.1 после обновления до версии 3.4.1 У меня сбой синхронизации.

Ранее я использовал оболочку 4.10.1, которая теперь обновляется до 5.1.1.

afterEvaluate(new Action<Project>() {

@Override
void execute(Project project) {
    tasks.getByName("assembleRelease").doLast {
        tasks.copyReleaseBuild.execute() //error is here
        tasks.copyReleaseBuildToXX.execute()
        tasks.copyReleaseBuildToXXXX.execute()
    }
}

copyReleaseBuild задание написано примерно так, как показано ниже ...

task copyReleaseBuild(type: Copy) {
    def releaseDir = getProjectProperty('releaseDir')
    if (releaseDir?.trim()) {
    //if release folder is provided
    def releaseAarFile =
            getProjectProperty('sourceCodeDir') + "/android-corekit/kit/build/outputs/aar/kit-release.aar"
    from releaseAarFile
    into releaseDir
    }

task copyReleaseBuildToXX(type: Copy) {
        from "./build/outputs/aar/kit-release.aar"
        into "../kitwrapper/libs"
    }

task copyReleaseBuildToXXXX(type: Copy) {
        from "./build/outputs/aar/kit-release.aar"
        into "../kitwrapperapp/libs"
    }
}

Я пытался решить последние два дня, но ничего не помогло, так как мне не хватает знанийgroovy.

Пожалуйста, проверьте журнал ошибок, который я получаю при создании проекта ... error log

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

Это происходит потому, что вы используете обновленную версию Gradle (проверьте миграцию на Gradle v5 )

Следующие свойства и методы TaskInternal были удалены - используйте вместо непосредственного выполнения задачи зависимости задач, правила задач, повторно используемые служебные методы или API-интерфейс Worker.

  • Execute ()
  • 1011 * Исполнитель *
  • getValidators ()
  • addValidator ()

Теперь вы не можете напрямую вызывать метод execute, но вы должны использовать зависимости задач для получения того же результата.

Просто укажите в вашем build.gradle:

task copyReleaseBuild {
    dependsOn 'assembleRelease'
    //...
}

и удалите это:

afterEvaluate(new Action<Project>() {

@Override
void execute(Project project) {
    tasks.getByName("assembleRelease").doLast {
        tasks.copyReleaseBuild.execute() //error is here
    }
}
1 голос
/ 30 мая 2019

Обновление вашей сборки с Gradle 4.x до 5.0

Следующие свойства и методы TaskInternal были удалены - используйте вместо непосредственного выполнения задачи зависимости задач, правила задач, повторно используемые служебные методы или API Worker.

  • Execute ()
  • 1010 * Исполнитель *
  • getValidators ()
  • addValidator ()

в вашем случае кажется, что у вас есть зависимость между задачами: copyReleaseBuild должен выполняться после assembleRelease

Итак, этот простой build.gradle представляет эту зависимость:

task copyReleaseBuild {
    dependsOn 'assembleRelease'
    doLast {
        println 'run copyReleaseBuild'
    }
}
task assembleRelease {
    doLast {
        println 'run assembleRelease'
    }
}

и команда gradle copyReleaseBuild запускает обе задачи:

# gradle copyReleaseBuild

> Task :assembleRelease
run assembleRelease

> Task :copyReleaseBuild
run copyReleaseBuild

BUILD SUCCESSFUL in 2s
2 actionable tasks: 2 executed
...