【问题标题】:How to execute maven liquibase pom from an external project's pom?如何从外部项目的 pom 执行 maven liquibase pom?
【发布时间】:2019-12-13 21:13:29
【问题描述】:

我的 maven 项目依赖于通过 liquibase 通过另一个外部项目创建的数据库模式。 为了测试我的项目,我需要在我的机器上生成这个数据库结构。 有没有办法在我的项目的 pom 本身中指定 liquibase 项目详细信息(组 id、工件、版本等以及必要的 liquibase 参数),以便在执行任何测试之前生成 db 结构。

P.S.:我知道如果项目确实存在于我的机器中,我可以使用类似下面的东西:

<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.1</version>
        <executions>
            <execution>
                <id>create-unitttest-db-schema</id>
                <phase>process-test-resources</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
                <configuration>
                    <skip>${skipSchemaCreation}</skip>
                    <executable>mvn</executable>
                    <arguments>
                        <argument>-f</argument>
                        <argument>../proj-liquibase-db/pom.xml</argument>
                        <argument>-P${proj.test.liquibase.create.profile},create</argument>
                        <argument>clean</argument>
                        <argument>install</argument>
                        <argument>-DdefaultSchemaName=${proj.test.schema.unittest}</argument>
                    </arguments>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

我想在这里指定proj-liquibase-db的项目坐标,而不是它的pom文件的路径。

P.P.S:如果不可能,请告诉我并提出一些替代方案,因为我真的被困在这里了。

【问题讨论】:

    标签: java maven liquibase


    【解决方案1】:

    您应该通过在类路径中添加项目 jar 并提供其他必要参数(如数据库详细信息等)来执行 liquibase jar,而不是依赖项:解包。

    【讨论】:

    • 如果项目使用 Maven 管理,您应该使用它来设置执行测试所需的所有内容。使用我建议的方法,您可以将解包绑定到 Maven 生命周期的流程资源阶段。所以 Maven 在进入测试阶段之前会注意使 liquibase 文件可用。然后你只需要配置你的测试上下文来执行 liquibase。您不需要任何手动操作,所有内容都将由 maven 管理,并与测试的源代码一起存储在您的 SCM 存储库中。
    【解决方案2】:

    您可以使用依赖插件将项目生成的包含 liquibase xml 文件的工件解压缩到“目标”目录的子文件夹中。 目标应该是依赖:解包。 然后,您只需在测试类中配置 liquibase 即可加载这些文件。

    亲切的问候

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2017-04-10
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      相关资源
      最近更新 更多