我很难在我的 Spring Boot 项目中设置 LiquiBase。我尝试浏览文档并找到一些指南 - 但它们似乎相互矛盾:(
我希望通过 Gradle 使用 LiquiBase,我希望它从 Hibernate 生成变更日志,并最终得到一个可以在服务器上运行的 SQL 脚本,以将架构更新到适当的版本。
为了让它通过 Gradle 运行,我使用这个插件 https://github.com/liquibase/liquibase-gradle-plugin使用他们的自述文件中显示的推荐设置。
为了让 Hibernate diff 正常工作,我正在使用https://github.com/liquibase/liquibase-hibernate
这是我的build.gradle文件:
buildscript {
ext {
springBootVersion = '2.0.5.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
plugins {
id 'java'
id 'net.ltgt.apt' version '0.10' // https://projectlombok.org/setup/gradle
id 'org.liquibase.gradle' version '2.0.1' // https://github.com/liquibase/liquibase-gradle-plugin
}
apply plugin: 'eclipse-wtp'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
}
}
通过运行它
> .\gradlew diffChangeLog -PrunList=main
但失败了
任务 :diffChangeLog liquibase-plugin:运行“主要”活动...在 2018 年 9 月 26 日星期三 13:36:24 CEST 启动 Liquibase(版本 3.6.2,构建于 2018-07-03 11:28:09)异常线程“main” java.lang.NoClassDefFoundError: org/springframework/core/io/ClassPathResource at liquibase.ext.hibernate.database.HibernateSpringPackageDatabase.isXmlFile(HibernateSpringPackageDatabase.java:54)
看起来它找不到Spring Boot。所以我然后尝试删除liquibaseRuntime但是 LiquiBase Gradle 插件抱怨liquibaseRuntime缺少。
似乎我陷入了一个循环。什么是设置它的理智方法?我真的不想重复liquibaseRuntime. 文档也从字面上说:
dependencies {
// All of your normal project dependencies would be here in addition to...
liquibaseRuntime 'org.liquibase:liquibase-core:3.6.1'
liquibaseRuntime 'org.liquibase:liquibase-groovy-dsl:2.0.1'
liquibaseRuntime 'mysql:mysql-connector-java:5.1.34'
}
请注意
// 除了...
是的。为什么...
请帮忙!
另外...我注意到你必须写两次数据库配置。当它已经在 spring boot 配置中设置时,为什么需要它?
蝴蝶刀刀
倚天杖
相关分类