使用liquibase+maven数据库可持续交付

当前现状

  1. 需要单独保存sql脚本
  2. 只能通过人工控制sql只执行一次
  3. 需要知道sql脚本执行版本,只能通过sql脚本存放目录进行确认
  4. 需要搭建新环境时,只能将线上数据库进行copy

解决方案

使用linquibase工具

liquibase

我眼中的liquibase

  1. liquibase其实就是一套db工具,类似hibernate的bean-xml,通过封装,将不同数据库的DML操作统一成一套语言,在有多个不同数据库(比如mysql, postgresql, oracle)时,能够实现一套代码到处建库(有木有一点像java)
  2. 提供数据库可持续集成交付,一旦changeSet被执行过,就不会再被执行(保证了只会执行一次),且也不允许再修改changeSet,否则由于计算出的md5值与之前的md5值不一致,在执行时就会报错失败。

项目搭建

  1. 配置maven环境,修改/etc/profile文件,加入以下语句,并执行 source /etc/profile 使配置生效

    MAVEN_HOME=/home/zhangj/maven/apache-maven-3.3.9
    export MAVEN_HOME
    export PATH=${PATH}:${MAVEN_HOME}/bin
    
  2. 在项目pom文件中引入liquibase相关plugin

    	<!--liquibase插件-->
    	<plugin>
    	    <groupId>org.liquibase</groupId>
    	    <artifactId>liquibase-maven-plugin</artifactId>
    	    <version>3.0.5</version>
    	    <configuration>
    	        <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
    	        <propertyFile>src/main/resources/liquibase.properties</propertyFile>
    	    </configuration>
    	</plugin>
    
    	<!--用于打包项目-->
    	<plugin>
    	    <artifactId>maven-assembly-plugin</artifactId>
    	    <version>3.0.0</version>
    	    <configuration>
    	        <descriptorRefs>
    	            <descriptorRef>src</descriptorRef>
    	        </descriptorRefs>
    	    </configuration>
    	    <executions>
    	        <execution>
    	            <id>make-assembly</id> <!-- this is used for inheritance merges -->
    	            <phase>package</phase> <!-- bind to the packaging phase -->
    	            <goals>
    	                <goal>single</goal>
    	            </goals>
    	        </execution>
    	    </executions>
    	</plugin>
    
  3. 将打好的src包,丢到刚刚配置好的maven环境中,执行mvn liquibase:update 就可以看到,你所写的changeSet被执行啦

  4. 其他细节参考http://www.liquibase.org/documentation/index.html

转载于:https://my.oschina.net/zjoschina/blog/834733

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值