2017-05-26 22 views
1

我的飞行用的配置 - 采用MVN包运行迁飞飞路的位置来控制DBMS的变化为多个数据块

<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版本3.2.1上执行类似的flyway配置文件来管理H2与时间之间的表格填充)

(新发现)在hte pom文件中使用flyway位置或配置文件条目。“mvn clean package”工作正常,但“mvn verify”给我错误s多个V#_#文件。

我在下面的目录结构

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

H2飞行用的文件,我创建一个子目录“H2”下迁移和移动飞路文件到该子目录。

我做了拷贝数据库和这些文件的Oracle EE版本 “DB /迁移/ DB2” 和“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插件有什么特别的吗?

回答

0

我能得到通过增加配置参数故障安全插件

<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“

1

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

0

迁徙路线搜索整个classpath中递归寻找迁移应用程序明确设置位置。 “递归”字表示检查嵌套在其他文件夹中的文件夹。

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

正如其他答案所建议的,如果您想要忽略某些誓言,您必须明确指定所需的文件夹。

+0

是的我想明确列出路径。我觉得有趣的是,如果我将文件从db.migration.db2和db.migration.h2移动到db.db2和db.h2,并将位置设置为db.h2,则每次操作都可以正常工作。最新的flyway版本总是希望从db.migration中搜索下来。我无法告诉它只搜索db.migration的子目录。但我的另一个项目是使用flyway 2.3.1,它将搜索限制在db.migration的特定子目录中。 –

+0

@petercooke请使用该评论中的说明编辑您的问题。 –

+0

编辑原始问题 –