用于控制多个数据库的 dbms 更改的 flyway 位置
flyway locations to control dbms changes for multiple DBs
我的 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 数据库引擎)我需要支持到其他数据库系统(db2、oracle ee、postgres)的 flyway。在另一个项目中,我们正在做类似的 flyway 配置flyway 版本 3.2.1 上的文件以管理 table H2 和 timesten 之间的创建。
(新发现)当我在 hte pom 文件中使用 flyway 位置或配置文件条目时。 "mvn clean package" 使用效果很好。但是 "mvn verify" 给我的错误是它有多个 V#_# 文件。
我在以下目录结构中有 H2 flyway 文件
atdd/src/main/java/db/migration/V1_2__comment.java
atdd/src/main/resources/db/migration/V1_1__create_tables.sql
我在迁移下创建了一个子目录 "h2",并将 flyway 文件移动到该子目录中。
我在 "db/migration/db2" 和“db/migration/oracle_ee
中复制了这些文件的 db 和 oracle ee 版本
运行 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插件有什么特别之处吗?
有一个解决方法,您可以尝试使用 Flyway.setLocations ("some/path/test.sql")
从程序中明确设置位置
Flyway 递归搜索整个类路径以查找要应用的迁移。 "recursively" 表示检查嵌套在其他文件夹中的文件夹。
所以您的所有 SQL 文件都已找到。 Flyway 无法知道应该使用或忽略哪些嵌套文件夹。
正如另一个答案所建议的那样,如果您希望某些誓言被忽略,则必须明确指定所需的文件夹。
我能够通过向故障安全插件添加配置参数来开始工作
<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 "
我的 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 数据库引擎)我需要支持到其他数据库系统(db2、oracle ee、postgres)的 flyway。在另一个项目中,我们正在做类似的 flyway 配置flyway 版本 3.2.1 上的文件以管理 table H2 和 timesten 之间的创建。
(新发现)当我在 hte pom 文件中使用 flyway 位置或配置文件条目时。 "mvn clean package" 使用效果很好。但是 "mvn verify" 给我的错误是它有多个 V#_# 文件。
我在以下目录结构中有 H2 flyway 文件
atdd/src/main/java/db/migration/V1_2__comment.java
atdd/src/main/resources/db/migration/V1_1__create_tables.sql
我在迁移下创建了一个子目录 "h2",并将 flyway 文件移动到该子目录中。
我在 "db/migration/db2" 和“db/migration/oracle_ee
中复制了这些文件的 db 和 oracle ee 版本运行 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插件有什么特别之处吗?
有一个解决方法,您可以尝试使用 Flyway.setLocations ("some/path/test.sql")
Flyway 递归搜索整个类路径以查找要应用的迁移。 "recursively" 表示检查嵌套在其他文件夹中的文件夹。
所以您的所有 SQL 文件都已找到。 Flyway 无法知道应该使用或忽略哪些嵌套文件夹。
正如另一个答案所建议的那样,如果您希望某些誓言被忽略,则必须明确指定所需的文件夹。
我能够通过向故障安全插件添加配置参数来开始工作
<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 "