Каталог скриптов Базы Данных

Добрый день!
Хотелось бы прояснить один вопрос.
Существует Каталог скриптов базы данных, который устанавливается свойством cuba.dbDir и по умолчанию он

app\deploy\tomcat\webapps\app-core\WEB-INF\db\10-cuba\update

В нашем приложении это свойство не прописано, поэтому я полагаю, что путь таков.
Однако, при выполнении задачи updateDb или GenerateScripts скрипты генерируются в папку

app\modules\core\db\update

Не очень понимаю механизм такой механизм работы.
Основная задача также состоит в подключении свойства cuba.automaticDatabaseUpdate, которое также не установлено. Судя по документации оно ищет скрипты по первому пути, но там ведь ничего не генерируется.
Прошу подробней объяснить процесс генерации и “путешествия” скриптов и их выполнения.

Так это 2 разных пути.
Второй - исходники, а первый - куда они будут скопированы при деплое.

Спасибо за ответ.
То есть при генерации и задаче update они генерируются во второй папке, затем во время задачи deploy копируются в первую.
Тогда есть еще пару вопросов.

  1. Если я в свойствах приложения пропишу cuba.automaticDatabaseUpdate = true, что конкретно будет происходить? Будут выполняться невыполненные скрипты из первой папки? Но ведь они например уже будут выполнены задачей updateDb, которая запускается первой при запуске сервера.
  2. Как правильно настроить авто-обновление БД при сборке JAR-файла. Сейчас скрипт создания JAR выглядит следующим образом:
task buildUberJar(type: CubaUberJarBuilding) {
    doFirst {
        println 'Begin cleaning and building jar'
        File jarFile = new File('./build/distributions/uberJar/app.jar');
        if (jarFile.isFile()) {
            println 'Remove old jar'
            jarFile.delete()
        }
        println 'Generate new JAR'
    }
    singleJar = true
    logbackConfigurationFile = 'etc/uber-jar-logback.xml'
    coreJettyEnvPath = 'modules/core/web/META-INF/jetty-env.xml'
    mergeResources = ['META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloader',
                      'META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory']
    appProperties = ['cuba.automaticDatabaseUpdate'       : true,                   
                     'cuba.web.loginDialogDefaultUser'    : '<disabled>',
                     'cuba.web.loginDialogDefaultPassword': '<disabled>',
                     'cuba.web.productionMode'            : true,
                     'cuba.email.sendAllToAdmin'          : false,
                     'cuba.webHostName'                   : 'xxxx']
}

Означает ли это, что при запуске JAR - файла автоматически запускаются скрипты из WEB-INF?
Либо нужно все таки собрать джарник, где в файле app.properties будет указано cuba.automaticDatabaseUpdate = true? В данный момент при запуске джарника, до деплоя запускаются скрипты из каталога modules, если есть.

Означает, потому что вы указали в build.gradle
'cuba.automaticDatabaseUpdate' : true

Эффект будет одинаковый. Первый способ также добавляет эти ключи в app.properties.

Верно. В вашей БД есть SYS_DB_CHANGELOG.

Я полагаю, что эта задача как раз и запускается, если установлено свойство
'cuba.automaticDatabaseUpdate' : true

Добрый день,
Скрипты в проекте генерируются в папку “app\modules\core\db\update”.

Потом во время сборки срабатывает Gradle-задача assembleDbScripts. Она скачивает другие скрипты, унаследованные из CUBA и аддонов, и складывает все скрипты в папку “app/modules/core/build/db”.
Потом при выполнении deploy или сборке артефактов скрипты копируются куда нужно.

Свойство cuba.automaticDatabaseUpdate включает авто-выполнение скриптов БД самим CUBA-приложением во время запуска сервера.
При разработке в Studio это свойство обычно выключено, т.к. Studio сама обновляет БД до запуска приложения.
Но при обновлении приложения на удаленном сервере это свойство необходимо включить.