У меня есть проект 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
в файле войны.
Итак, есть ли способ создать таблицы с использованием файлов журнала изменений при запуске приложения ?