1

我正在尝试使用我在我@Entity的 s中所做的更改生成一个变更集

我有以下 gradle 设置。我正在使用这些插件 liquibase-gradle-plugin liquibase-hibernate

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('org.springframework.boot:spring-boot-starter-data-rest')
    compile('org.springframework.boot:spring-boot-starter-hateoas')
    compile('org.springframework.boot:spring-boot-starter-jooq')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.springframework.boot:spring-boot-starter-mail')
    compile('com.github.waffle:waffle-spring-boot-starter:1.9.0')
    compile('com.oracle.jdbc:ojdbc8:12.2.0.1')
    runtime('org.springframework.boot:spring-boot-devtools')
    compileOnly('org.projectlombok:lombok')
    apt('org.projectlombok:lombok:1.18.2')
    liquibaseRuntime('org.liquibase:liquibase-core:3.6.2')
    liquibaseRuntime('org.liquibase:liquibase-groovy-dsl:2.0.1')
    liquibaseRuntime('org.liquibase.ext:liquibase-hibernate5:3.6')
    liquibaseRuntime('com.oracle.jdbc:ojdbc8:12.2.0.1')
    liquibaseRuntime('org.springframework.boot:spring-boot-starter-data-jpa')
    liquibaseRuntime sourceSets.main.output
    providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile('org.springframework.restdocs:spring-restdocs-mockmvc')
}

diff.dependsOn compileJava
diffChangeLog.dependsOn compileJava
generateChangelog.dependsOn compileJava

liquibase {
  activities {
    main {
      changeLogFile 'main.groovy'
      referenceUrl 'jdbc:oracle:thin:@localhost:1521:XE'
      referenceUsername 'user'
      referencePassword 'pass'
      url 'hibernate:spring:com.example' +
                   '?dialect=org.hibernate.dialect.Oracle10gDialect' +
                   '&hibernate.enhanced_id=true'
    }
  }
  runList = 'main'
}

脚步

  1. .\gradlew diffChangeLog
  2. .\gradlew 更新
  3. 观察初始数据库是否已正确创建
  4. 观察 DATABASECHANGELOG 表已正确填充
  5. 将属性添加到@Entity
  6. .\gradlew diffChangeLog
  7. 请注意,没有新的变更集被添加到main.groovy文件中。相反,实体的现有变更集已被更改。让一切变得毫无用处!

我究竟做错了什么?

4

2 回答 2

1

阅读您应该用来生成变更集文件的wiki 。gradle diff仅用于gradle diffChangeLog第一个主 xml。

于 2019-01-05T18:30:15.250 回答
1

Liquibase 不会从变更集文件生成模式,@entity而是从变更集文件生成模式。

您必须让 hibernate/jpa/else 生成模式,然后使用diffChangeLog命令。这允许您生成变更集文件。

与代码中的注释并行,在变更集文件中添加修改可能会更容易。

于 2018-10-01T06:28:21.617 回答