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

我试图在已经提出的问题以及一些用户推荐的这篇文章中找到答案: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>

Qyouu
浏览 99回答 1
1回答

茅侃侃

根本原因可能是 Liquibase 插件在类路径中找不到您编译的类。我发现您通过src/main/resources/.... 当作为 Maven 构建的一部分执行 Liquibase 插件时,所有资源都应该直接在类路径上可用,例如changelog-master.xml(没有相对路径)。编译后尝试将diff目标作为 Maven 构建的一部分执行。此 POM 配置将插件绑定到流程类阶段:<build><plugins>&nbsp; <plugin>&nbsp; &nbsp; <groupId>org.liquibase</groupId>&nbsp; &nbsp; <artifactId>liquibase-maven-plugin</artifactId>&nbsp; &nbsp; <version>3.6.3</version>&nbsp; &nbsp; <dependencies>...&nbsp; &nbsp; </dependencies>&nbsp; &nbsp; <configuration>&nbsp; &nbsp; &nbsp; <verbose>true</verbose>&nbsp; &nbsp; </configuration>&nbsp; &nbsp; <executions>&nbsp; &nbsp; &nbsp; <execution>&nbsp; &nbsp; &nbsp; &nbsp; <goals>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <goal>diff</goal>&nbsp; &nbsp; &nbsp; &nbsp; </goals>&nbsp; &nbsp; &nbsp; &nbsp; <phase>process-classes</phase>&nbsp; &nbsp; &nbsp; </execution>&nbsp; &nbsp; </executions>&nbsp; </plugin>要执行此操作,请运行mvn process-classes或稍后阶段,如mvn test.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java