小编典典

无法从Liquibase Gradle插件中产生差异

spring-boot

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

我所做的:

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

我在某处读到该gradle插件仅适用于内存h2数据库?真的吗?如果是,那么我应该使用什么替代方法来自动生成变更日志。

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

参考文献:

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

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


阅读 370

收藏
2020-05-30

共1个答案

小编典典

解决方案是编写gradle任务来调用 liquibase diffChangeLog

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

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

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

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

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

现在,您可以gradle liquibaseDiffChangeLog用来生成变更日志。

2020-05-30