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')
}
Таким образом, каждая сборка в папке ресурсов фазы настройки была удалена. Смешной!