和小伙伴領(lǐng)了flyway的卡醇滥,我們預(yù)期是一天完成识窿,但在demo上卡住吹埠,所以超時(shí)了第步,用了幾乎2天的時(shí)間完成。分析原因使我們的學(xué)習(xí)思路不清缘琅,我們要學(xué)習(xí)gradle插件方式的flyway migrate,但卻完全不了解gradle.告訴老師我們的為題所在粘都,在老師的講解指導(dǎo)下,我們的產(chǎn)出劃分為三個(gè)小demo:
1.gradle的小demo
github地址:https://github.com/MHwishes/gredle-hello-world/tree/master
2.gradle帶輕量級(jí)插件的demo
github地址:https://github.com/MHwishes/gredle-hello-world/tree/plugin
3.gradle帶插件flyway migrate的demo
github地址:demo.https://github.com/twa-rs-demos/flyway-migrate-demo
按照上面的思路刷袍,我們完成了最后的第三步翩隧。
現(xiàn)將我們學(xué)習(xí)的知識(shí)總結(jié)如下:
一.什么是flyway?
Flyway是一款開(kāi)源的數(shù)據(jù)庫(kù)版本管理工具。Flyway可以獨(dú)立于應(yīng)用實(shí)現(xiàn)管理并跟蹤數(shù)據(jù)庫(kù)變更呻纹,支持?jǐn)?shù)據(jù)庫(kù)版本自動(dòng)升級(jí)鸽心,并且有一套默認(rèn)的規(guī)約,不需要復(fù)雜的配置居暖,Migrations可以寫(xiě)成SQL腳本顽频,也可以寫(xiě)在Java代碼中,不僅支持Command Line和Java API太闺,還支持Build構(gòu)建工具和Spring Boot等糯景,同時(shí)在分布式環(huán)境下能夠安全可靠地升級(jí)數(shù)據(jù)庫(kù),同時(shí)也支持失敗恢復(fù)等。
二.6種基本命令
Clean: 刪除所有創(chuàng)建的數(shù)據(jù)庫(kù)對(duì)象蟀淮,包括用戶最住、表、視圖等
Migrate: 對(duì)數(shù)據(jù)庫(kù)依次應(yīng)用版本更改怠惶。
Info:獲取目前數(shù)據(jù)庫(kù)的狀態(tài)涨缚。那些遷移已經(jīng)完成,那些遷移待完成策治。所有遷移的執(zhí)行時(shí)間以及結(jié)果脓魏。
Validate:驗(yàn)證數(shù)據(jù)庫(kù)結(jié)構(gòu)與遷移腳本的異同。
Baseline:根據(jù)現(xiàn)有的數(shù)據(jù)庫(kù)結(jié)構(gòu)生成一個(gè)基準(zhǔn)遷移腳本通惫。
三.運(yùn)行方式
command-line茂翔,API(java/android),maven履腋,gradle珊燎,ant,SBT
我們學(xué)習(xí)的重點(diǎn)是gradle,其余的就先不說(shuō)了,想要理解詳情的小伙伴請(qǐng)戳官網(wǎng) https://flywaydb.org/
四.在gradle 中使用 flyway migrate
環(huán)境:
1.Java 版本在 6.0 以上
2.安裝有 Gradle(安裝地址:https://gradle.org/gradle-download/)
根據(jù)官網(wǎng)的實(shí)例 https://flywaydb.org/getstarted/firststeps/gradle 我們完成了gradle 插件方式的fly migrate的簡(jiǎn)單小demo遵湖,github地址:https://github.com/twa-rs-demos/flyway-migrate-demo 悔政。
通過(guò)命令gradle flywayMigrate -i
實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的遷移。
其中:每次修改以’V版本號(hào)__描述.sql’的方式命名延旧。比如V1__Create_person_table.sql谋国, V2__Add_people.sql,V3__Add_people.sql
Flyway會(huì)根據(jù)文件名自動(dòng)識(shí)別版本順序,并根據(jù)這些版本順序來(lái)應(yīng)用數(shù)據(jù)庫(kù)修改垄潮。
執(zhí)行遷移命令之前烹卒,我們先執(zhí)行命令
gradle flywayInfo -i
闷盔,得到結(jié)果如下圖:
執(zhí)行命令
gradle flywayMigrate -i
實(shí)現(xiàn)遷移后得到如下信息:
再次執(zhí)行命令
gradle flywayInfo -i
弯洗,可得如下的信息:
有上可知數(shù)據(jù)庫(kù)已完成遷移。
在在Gradle中的應(yīng)用首先需要在Gradle中引入Flyway插件逢勾,通常有兩種方式:
1.方式一:采用buildscript依賴方式牡整。
buildscript
{ repositories { mavenCentral() }
dependencies {
classpath("org.flywaydb:flyway-gradle-plugin:4.0.3") }}
apply plugin: 'org.flywaydb.flyway'
2.方式二(推薦):采用DSL方式引用Plugins。
plugins {
id "org.flywaydb.flyway" version "4.0.3"
}
而在Gradle中配置Flyway Properties有兩種方式:
1.方式一:在build.gradle中配置Flyway Properties溺拱。
flyway {
url = jdbc:h2:./.tmp/testdb
user = sa
password = }#
或者寫(xiě)成:
project.ext['flyway.url'] = 'jdbc:h2:./.tmp/testdb'
project.ext['flyway.user'] = 'sa'
project.ext['flyway.password'] = ''
2.在gradle.properties中配置Flyway Properties
flyway.url = jdbc:h2:./.tmp/testdb
flyway.user = sa
flyway.password =
個(gè)人學(xué)習(xí)總結(jié):不要心急逃贝,合理規(guī)劃時(shí)間,學(xué)習(xí)思路要清晰迫摔,準(zhǔn)確搜索
參考資料:
http://blog.waterstrong.me/flyway-in-practice/
http://www.cnblogs.com/huang0925/p/4409506.html
http://adabeauty.github.io/2015/05/20/flyway/%E6%95%B0%E6%8D%AE%E5%BA%93/