Решенията са да напишете градул задача, която извиква liquibase diffChangeLog
Създайте liquibase.gradle
файл в основната директория на проекта, добавете разширение liquibase-hibernate и напишете Gradle задача, която извиква liquibase diffChangeLog
команда.
configurations {
liquibase
}
dependencies {
liquibase group: 'org.liquibase.ext', name: 'liquibase-hibernate4', version: 3.5
}
//loading properties file.
Properties liquibaseProps = new Properties()
liquibaseProps.load(new FileInputStream("src/main/resources/liquibase-task.properties"))
Properties applicationProps = new Properties()
applicationProps.load(new FileInputStream("src/main/resources/application.properties"))
task liquibaseDiffChangelog(type: JavaExec) {
group = "liquibase"
classpath sourceSets.main.runtimeClasspath
classpath configurations.liquibase
main = "liquibase.integration.commandline.Main"
args "--changeLogFile=" + liquibaseProps.getProperty('liquibase.changelog.path')+ buildTimestamp() +"_changelog.xml"
args "--referenceUrl=hibernate:spring:" + liquibaseProps.getProperty('liquibase.domain.package') + "?dialect=" + applicationProps.getProperty('spring.jpa.properties.hibernate.dialect')
args "--username=" + applicationProps.getProperty('spring.datasource.username')
args "--password=" + applicationProps.getProperty('spring.datasource.password')
args "--url=" + applicationProps.getProperty('spring.datasource.url')
args "--driver=com.mysql.jdbc.Driver"
args "diffChangeLog"
}
def buildTimestamp() {
def date = new Date()
def formattedDate = date.format('yyyyMMddHHmmss')
return formattedDate
}
ЗАБЕЛЕЖКА:Използвах файлове със свойства за предаване на аргументи към командата liquibase, можете да добавите стойностите директно, но това не би било добра практика.
След това ще трябва да приложите liquibase.gradle
файл от build.gradle
на проекта файл. и добавете зависимостта liquibase
apply from: 'liquibase.gradle'
//code omitted
dependencies {
compile (group: 'org.liquibase', name: 'liquibase-core', version: "3.4.2")
}
След тази стъпка liquibase ще бъде настроена напълно.