Solusinya adalah dengan menulis tugas bertahap yang memanggil liquibase diffChangeLog
Buat liquibase.gradle
file di direktori root proyek, tambahkan ekstensi liquibase-hibernate dan tulis tugas gradle yang memanggil liquibase diffChangeLog
perintah.
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
}
CATATAN:Saya telah menggunakan file properti untuk meneruskan argumen ke perintah liquibase, Anda dapat menambahkan nilai secara langsung, tetapi itu bukan praktik yang baik.
Selanjutnya, Anda perlu menerapkan liquibase.gradle
file dari dalam build.gradle
. proyek mengajukan. dan tambahkan ketergantungan liquibase
apply from: 'liquibase.gradle'
//code omitted
dependencies {
compile (group: 'org.liquibase', name: 'liquibase-core', version: "3.4.2")
}
Setelah langkah ini, liquibase akan diatur sepenuhnya.