为了账号安全,请及时绑定邮箱和手机立即绑定

Liquibase 不创建基于 JPA 实体的差异变更日志

Liquibase 不创建基于 JPA 实体的差异变更日志

Qyouu 2022-06-30 17:42:07
我试图在已经提出的问题以及一些用户推荐的这篇文章中找到答案:http ://www.operatornew.com/2012/11/automatic-db-migration-for-java-web.html但没有运气好的话。问题是我使用 Maven 构建工具和 Postgres DB 为我的 Java 项目配置了 Liquibase 的完整配置,但即使我已经定义了 Hibernate 实体,Liquibase diff也没有考虑到它们,也不会产生基于 JPA 注释实体的变更锁.我尝试了所有方法,但使用空的 changelock-master.xml并定义了 2 个实体,结果diff.xml为空。这是我的pom.xml:        <!--LIQUIBASE-->        <dependency>            <groupId>org.liquibase</groupId>            <artifactId>liquibase-core</artifactId>        </dependency>        <dependency>            <groupId>org.liquibase</groupId>            <artifactId>liquibase-maven-plugin</artifactId>            <version>3.4.1</version>        </dependency>        ...        <plugin>                <groupId>org.liquibase</groupId>                <artifactId>liquibase-maven-plugin</artifactId>                <version>3.5.3</version>                <dependencies>                    <dependency>                        <groupId>org.liquibase.ext</groupId>                        <artifactId>liquibase-hibernate4</artifactId>                        <version>3.6</version>                    </dependency>                    <dependency>                        <groupId>org.springframework</groupId>                        <artifactId>spring-beans</artifactId>                        <version>4.1.7.RELEASE</version>                    </dependency>                    <dependency>                        <groupId>org.springframework.data</groupId>                        <artifactId>spring-data-jpa</artifactId>                        <version>1.7.3.RELEASE</version>                    </dependency>                </dependencies>                <configuration>                    <propertyFile>src/main/resources/liquibase.properties</propertyFile>                    <changeLogFile>src/main/resources/db/changelog/changelog-master.xml</changeLogFile>                </configuration>            </plugin>
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

根本原因可能是 Liquibase 插件在类路径中找不到您编译的类。


我发现您通过src/main/resources/.... 当作为 Maven 构建的一部分执行 Liquibase 插件时,所有资源都应该直接在类路径上可用,例如changelog-master.xml(没有相对路径)。


编译后尝试将diff目标作为 Maven 构建的一部分执行。此 POM 配置将插件绑定到流程类阶段:


<build>

<plugins>

  <plugin>

    <groupId>org.liquibase</groupId>

    <artifactId>liquibase-maven-plugin</artifactId>

    <version>3.6.3</version>

    <dependencies>

...

    </dependencies>

    <configuration>

      <verbose>true</verbose>

    </configuration>

    <executions>

      <execution>

        <goals>

          <goal>diff</goal>

        </goals>

        <phase>process-classes</phase>

      </execution>

    </executions>

  </plugin>

要执行此操作,请运行mvn process-classes或稍后阶段,如mvn test.


查看完整回答
反对 回复 2022-06-30
  • 1 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信