我有一个基于Gradle的项目,包含许多JPA实体类。
我还没有数据库,但我想用XML生成liquibasechangesets
的集合。
因此,我可以用初始模式定义填充一个空数据库。
问题是使用liquibaseGenerateChangelog
Gradle任务,尽管我提供了包含类的包,但生成的XMLchangeset
文件不包含任何changesets
从我的JPA实体生成更改日志的命令:
./gradlew liquibaseGenerateChangelog
--changeLogFile=src/main/resources/config/liquibase/master.xml
--url=hibernate:spring:com.company.project.domain?dialect=liquibase.ext.hibernate.database.HibernateGenericDialect
--driver=liquibase.ext.hibernate.database.connection.HibernateDriver
liquibase创建的空文件:
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:pro="http://www.liquibase.org/xml/ns/pro" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-4.1.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd"/>
我在com.company.project.domain
中有课,例如:
@Entity
@Table(name = "user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
// etc
我在build.gradle
中有以下内容:
..
implementation "org.hibernate:hibernate-core"
implementation "org.liquibase:liquibase-core"
liquibaseRuntime "org.liquibase:liquibase-core"
liquibaseRuntime "org.liquibase.ext:liquibase-hibernate5:4.6.1"
liquibaseRuntime sourceSets.main.compileClasspath
implementation "org.springframework.boot:spring-boot-starter-data-jpa"
Liquibase中包含了几个不同的样本数据库。由于您没有可供测试的数据库,因此可以尝试使用其中一个数据库来测试您的配置。这里有一个链接,其中包含有关运行所包含的H2数据库的详细信息,以及我们关于使用Liquibase Test Harness的课程的另一个链接。
https://docs.liquibase.com/commands/init/start-h2.html?Highlight=h2https://learn.liquibase.com/catalog/info/id:130