flyway位置控制多个DB的dbms更改

时间:2017-05-26 16:16:54

标签: maven-3 flyway maven-surefire-plugin

我的flyway配置 - 使用mvn包运行flyway

<plugin>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-maven-plugin</artifactId>
            <version>4.2.0</version>
            <configuration>
                <locations>
                    <location>db.migration.h2</location>
                </locations>
            </configuration>
        </plugin>

我有一个maven应用程序,适用于一个数据库(使用h2数据库引擎)我需要支持flyway到其他数据库系统(db2,oracle ee,postgres。在另一个项目我们正在做类似的flyway配置文件flyway版本3.2.1管理H2和timesten之间的表格。

(新发现)当我在hte pom文件中使用flyway位置或配置文件条目时。 &#34; mvn clean package&#34;工作正常。但是&#34; mvn验证&#34;给我一个错误,它有多个V#_#files。

我在以下目录结构中有H2 flyway文件

atdd/src/main/java/db/migration/V1_2__comment.java
atdd/src/main/resources/db/migration/V1_1__create_tables.sql

我创建了一个子目录&#34; h2&#34;在迁移下并将flyway文件移动到该子目录中。

我在&#34; db / migration / db2&#34;中创建了这些文件的db和oracle ee版本的副本。和&#34; db / migration / oracle_ee

RUNNING maven包只给了我:

Caused by: org.flywaydb.core.api.FlywayException: Found more than one migration with version 1.1
Offenders:
->/Users/XXXXX/Documents/fun/atdd/target/classes/db/migration/h2/V1_1__create_tables.sql (SQL)
->/Users/xxxxxx/Documents/fun/atdd/target/classes/db/migration/db2/V1_1__create_tables.sql (SQL)

我尝试过使用属性文件但无法使用

   <plugin>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-maven-plugin</artifactId>
            <version>4.2.0</version>

            <configuration>
                   <configFile>./flyway.properties</configFile>
            </configuration>
        </plugin>

atdd / flyway.properties有

 flyway.locations=db.migration.h2

似乎是运行回归测试的问题(surefire插件 - 我对maven相当新) surefire插件有什么特别之处吗?

3 个答案:

答案 0 :(得分:1)

有一种解决方法,您可以尝试使用Flyway.setLocations ("some/path/test.sql")

从程序中明确设置位置

答案 1 :(得分:0)

Flyway以递归方式搜索整个类路径,寻找要应用的迁移。 “递归”一词意味着检查嵌套在其他文件夹中的文件夹。

所以找到了所有的SQL文件。 Flyway无法知道应该使用哪些嵌套文件夹,或者应该忽略这些文件夹。

正如另一个答案建议的那样,如果你想要忽略一些誓言,你必须明确指定所需的文件夹。

答案 2 :(得分:0)

我能够通过向failafe插件添加配置参数来实现工作

 <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.19.1</version><!--$NO-MVN-MAN-VER$ -->
            <configuration><argLine>-Dflyway.locations=db.migrtion.h2</argLine></configuration>
            <executions>

mvn clean package  verify site -Dflyway.locations=db.migration.h2 
如果我没有“-Dflyway.locations = db.migration.h2”,

奇怪的是不行。