Liquibase 数据库版本管理插件的配置和使用

8 篇文章 0 订阅
7 篇文章 0 订阅

Liquibase 是一个用于跟踪、管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包括结构和数据)都保存在 changelog文件中,便于版本跟踪控制,尤其是在敏捷开发模式中, 它的目标是提供一种数据库类型无关的解决方案,通过执行 schema 类型的文件来达到迁移。


自动化CI所采用的常见插件

Liquibase 的简单介绍

Liquibase 具备如下特性:

  • 支持几乎所有主流的数据库,如 MySQL, PostgreSQL, Oracle, Sql Server, DB2 等;
  • 支持多开发者的协作维护;
  • 日志文件支持多种格式,如 XML, YAML, JSON, SQL等;
  • 支持上下文相关逻辑
  • 生成数据库变更文档
  • 支持多种运行方式,如命令行、Spring 集成、Maven 插件、Gradle 插件等。

在项目中配置使用Liquibase

在Gradle项目中, 配置使用Liquibase

gradle构建脚本使用groovy

  1. 首先在build.gradle中引入Liquibase 插件
buildscript {
    ext {
        springBootVersion = '2.1.0.RELEASE'
    }
    repositories {
        mavenCentral()
        maven {
            url 'https://plugins.gradle.org/m2/'
        }
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
        classpath 'org.liquibase:liquibase-gradle-plugin:2.0.1'
    }
}

// 以外部文件的方式引入插件
apply from: 'gradle/liquibase.gradle'
  1. 看一下liquibase.gradle文件里面的内容
apply plugin: 'org.liquibase.gradle'

def getLiquibaseProperties = {
    def properties = new Properties()
    file("src/main/resources/db/liquibase/liquibase.properties").withInputStream { inputStream ->
        properties.load(inputStream)
    }
    properties
}

ext.liquibaseProperties = getLiquibaseProperties()

liquibase {
    activities {
        main {
            driver liquibaseProperties['jdbcDriver']
            changeLogFile liquibaseProperties['changeLog']
            url liquibaseProperties['jdbcUrl']
            username liquibaseProperties['jdbcUser']
            password liquibaseProperties['jdbcPassword']
        }
    }
}
  1. 因为liquibase需要将开发人员修改的SQL执行到数据库中, 所以需要配置数据库的连接信息
    src/main/resources/db/liquibase/liquibase.properties
jdbcUrl=jdbc:mysql://xxxxx:3306/moon?useUnicode=true
jdbcDriver=com.mysql.cj.jdbc.Driver
jdbcUser=username
jdbcPassword=password
changeLog=src/main/resources/db/liquibase/changelog.mysql.sql
  1. liquibase所要维护的数据库变化都放在changeLog文件中
    src/main/resources/db/liquibase/changelog.mysql.sql
--liquibase formatted sql [任务ID]-[日期]-[序号],如 Task001-20190625-001

--changeset moon:Task001-20190625-001
create table test (
  id int(11),
  name varchar(32)
);

--changeset moon:Task002-20190625-001
insert into test values (1, 'Hinsteny'), (2, 'moon');
  1. 在命令行终端执行以下命令对插件进行使用
// 将changeLog中的修改应用到数据库
gradlew update

Over!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值