Как запускать журналы изменений Liquibase при запуске приложения в проекте Gradle? - PullRequest
0 голосов
/ 18 июня 2020

У меня есть проект Spring Boot, созданный с помощью gradle. Ниже приведен фрагмент из build.gradle, который показывает добавление Liquibase:

plugins {
    id 'org.springframework.boot' version '2.2.6.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'java'
    id 'war'
    id 'org.liquibase.gradle' version '2.0.3'
}

dependencies {

    //other dependencies

    runtimeOnly 'org.postgresql:postgresql'
    runtime 'com.h2database:h2'

    liquibaseRuntime 'org.liquibase:liquibase-core:3.8.1'   
    liquibaseRuntime 'org.liquibase:liquibase-groovy-dsl:2.1.1'     
    liquibaseRuntime 'org.postgresql:postgresql:42.1.4'     
    liquibaseRuntime 'com.h2database:h2:1.3.160'    
    liquibaseRuntime 'org.liquibase.ext:liquibase-hibernate5:3.6'   
    liquibaseRuntime 'ch.qos.logback:logback-classic:1.2.3'     
    liquibaseRuntime sourceSets.main.output
    liquibaseRuntime 'org.springframework.data:spring-data-jpa'

    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' 
}


diffChangeLog.dependsOn assemble

liquibase {
    activities {
        main {
            changeLogFile 'src/main/resources/db/changelog/changelog-master.xml'
            url 'jdbc:postgresql://localhost:5432/testdb'
            username 'postgres'
            password 'postgres'
            referenceUrl 'hibernate:spring:com.example.project.model?dialect=org.hibernate.dialect.ProgressDialect'
        }
    }
}

С этой настройкой я могу запустить команду gradle generateChangeLog для создания файла changelog-master.xml, а затем запустить gradle diffChangeLog для создания журналы изменений и добавьте изменения в тот же файл. Затем я запускаю команду gradle update, чтобы создать таблицы в базе данных, включая таблицы databasechangelog и databasechangeloglock. Так все работает нормально.

Проблема в том, что я не хочу запускать команду gradle update каждый раз, но я хочу, чтобы таблицы создавались при запуске приложения. Мне это нужно, потому что, когда приложение развертывается в производственной среде, я не могу запустить команду gradle update в файле войны.

Итак, есть ли способ создать таблицы с использованием файлов журнала изменений при запуске приложения ?

...