Копирование своих файлов в задаче deploy

Добрый день.

Подскажите, пожалуйста, куда/как подлезть в build.gradle в задаче deploy (?), для копирования “своих файлов” в веб-модуле (в /app/). Нужно копировать файлы при выполнении задач deploy и buildWar.

Добрый день.

Вы можете создать свои задачи копирования в build.gradle с типом Copy и указать, что задача deploy зависит от их выполнения. Ниже пример из приложения Sampler:

   task copyLogo(type: Copy) {
        from 'themes/halo/images/platform-logo.png'
        into "$cuba.tomcat.dir/work/sampler-core/filestorage/2015/04/01"
        rename 'platform-logo.png', '61a6a1ee-f13a-f44f-0201-c2f9b3288305.png'
    }

    task copyImages(type: Copy) {
        from 'themes/halo/images/customer-standard.svg'
        into "$cuba.tomcat.dir/work/sampler-core/filestorage/2017/07/19"
        rename 'customer-standard.svg', 'efc56835-5f5c-6614-bf74-e26e48e2ac5f.svg'

        from 'themes/halo/images/cuba-logo.png'
        into "$cuba.tomcat.dir/work/sampler-core/filestorage/2017/07/19"
        rename 'cuba-logo.png', 'a2ba9e37-9f05-3ee3-4041-e838d505415c.png'
    }

    task deploy(dependsOn: [assemble, cleanConf, copyLogo, copyImages], type: CubaDeployment) {
        appName = "${modulePrefix}"
        appJars(modulePrefix + '-global', modulePrefix + '-web')
    }

Глеб

@gorelov Глеб, спасибо за ответ.
А разве это сработает для сборки в buildWar? Вы копируете это в $cuba.tomcat.dir. buildWar же при этом собирает в другой каталог (/build/tmp). Или я не прав?
Кроме того мне бы хотелось выполнить копирование после выполнения “штатного” копирования.

Опять же про

    deploy.doLast {
        
    }

мне известно, но не понятно какую переменную в путях использовать, чтобы это попало в архив и при выполнении buildWar.

И кстати, самая засада в том, что deploy.doLast не выполняется при выполнении buildWar, видимо, deploy не дергается при выполнении buildWar вовсе (нельзя заставить idea скачать исходники плагина? или они закрыты?). Если это так, тогда получается, что остается только искать точку входа в задаче buildWar…

В общем вопрос сниму, пожалуй.
buildWar не использует deploy, что для меня выглядит странным, но наверное на это есть причины.
Решил следующим образом.
Прямо в файле build.gralde расширяем задачу:

class CustomWarBuilding extends CubaWarBuilding {
    @Override
    protected void copySpecificWebContent(Project theProject) {
        super.copySpecificWebContent(theProject)

        //Copy some what you need 
        if (theProject.name == 'app-web') {
            FileUtils.copyDirectory(
                    new File("${project.rootDir}/etc/some"),
                    new File("${getWebTmpWarDir()}/some")
            )
            println "Some was copied"
        }
    }
}

Объявляем задачу:

task buildWar(type: CustomWarBuilding) {
    singleWar = false
    appProperties = ['cuba.automaticDatabaseUpdate': true]
    ...
}

К сожалению отладчиком залезть в методы CustomWarBuilding и CubaWarBuilding у меня не получилось (плюс отсутствуют исходники), поэтому пришлось повозиться.
Может быть кому-то пригодится.

1 симпатия