微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql – 无法与liquibase gradle插件生成差异

我正在尝试使用MysqL数据库在现有的SpringBoot项目中实现liquibase.我希望能够生成更改集,指定实体更改时的差异.

我做了什么:

我在build.gradle文件添加了liquibase依赖项和gradle liquibase插件.进行域更改后,我运行了gradle generateChangeLog.该命令执行成功但没有任何反应.

我在某地读过这个gradle插件只适用于内存h2数据库?真的吗?如果是,那么我应该使用什么替代方案自动生成更改日志.

我找不到一个有效的SpringBoot基于gradle的示例,该示例使用MysqL并且已实现具有自动更改生成功能的liquibase.如果有人可以提供,那就太好了.

参考文献:

https://github.com/stevesaliman/liquibase-workshop

https://github.com/liquibase/liquibase-gradle-plugin

最佳答案
解决方案是编写一个调用liquibase diffChangeLog的gradle任务

在项目根目录中创建liquibase.gradle文件,添加liquibase-hibernate扩展并编写一个调用liquibase diffChangeLog命令的gradle任务.

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命令,您可以直接添加值,但这不是一个好习惯.

接下来,您需要从项目的build.gradle文件中应用liquibase.gradle文件.并添加liquibase依赖项

apply from: 'liquibase.gradle'
//code omitted
dependencies {
    compile (group: 'org.liquibase',name: 'liquibase-core',version: "3.4.2")
}

在此步骤之后,将完全设置liquibase.

You can Now use gradle liquibaseDiffChangeLog to generate
changelogs.

原文地址:https://www.jb51.cc/mysql/434124.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐