Gradle инкрементная сборка для моей задачи: что не так?

Я борюсь с Gradle 3.3 в Android Studio 2.3. У меня есть задача создания активов, для которой я указываю input.dir и output.dir в разделе cfg:

task compileAssets{

inputs.dir 'src/main/assets_src' 
outputs.dir 'src/main/assets' 

def proj_src = 'src/main/'
def abs_proj_src = project.projectDir.getAbsolutePath() + '/' + 'src/main/'
abs_proj_src = abs_proj_src.replace('\\','/')

doLast {
    delete(proj_src + 'assets')
    mkdir(proj_src + 'assets')

    copy
        {
            from proj_src + 'assets_src'
            include 'xml/**'
            include 'fonts/**'
            include 'shaders/**'
            into proj_src + 'assets'
        }

    javaexec{
        main = '-jar'
        args = [
            "../../utils/encoder.jar",
            abs_proj_src + 'assets_src/bin/levels',
            abs_proj_src + 'assets/bin/levels',
            '-rewrite'
        ]
    }
}

Я ожидаю, что Gradle проверит содержимое изменений входной папки и, если некоторые файлы были добавлены, удалены или изменены, это позволит выполнить задачу, иначе он напечатает "UP-TO-DATE". Но это так только когда только delete(...) и mkdir(...). В противном случае это выполняется каждый раз. Может быть, я неправильно понимаю термин "инкрементная сборка"? Или, может быть, есть ограничение размера задачи, или javaexec или копирование запрещено в инкрементной сборке?

PS. Я попытался запустить задачу с помощью команды make и непосредственно из панели проектов AS Gradle.

1 ответ

Это была моя собственная ошибка. Ниже определена задача cleanAssets, где я забыл добавить << или doLast:

task cleanAssets{
        delete(proj_src + 'assets')
        mkdir(proj_src + 'assets')
}

Таким образом, каждая сборка в папке ресурсов фазы настройки была удалена. Смешной!

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