Flyway不会在默认阶段执行

时间:2014-09-23 07:56:31

标签: java maven maven-plugin flyway

我正在研究Maven项目,并且我添加了flyway插件,它执行sql脚本以进行测试。我想确保这些脚本不会意外执行,但只能使用“mvn ... flyway:migrate”

我发现 migrate 操作的默认阶段是 pre-integration-test ,但是当我运行 mvn clean install flyway isn时被调用(这对我没问题,但我想知道为什么不调用它们。)

以下是 pom.xml 的一部分:

        <plugin>             
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-maven-plugin</artifactId>  
            <version>3.0</version>             
            <configuration>
                <driver>${db-driver-name}</driver>
                <url>${db-url}</url>
                <user>${db-user-name}</user>
                <password>${db-user-password}</password>
                <locations>
                    <location>filesystem:./src/main/resources/db/scripts/V${db-version}</location>
                </locations>
                <schemas>
                    <schema>schema</schema>
                </schemas>
            </configuration>
            <dependencies> 
                <dependency>
                    <groupId>oracle.jdbc</groupId>
                    <artifactId>ojdbc6</artifactId>
                    <version>11.2.0.4</version>
                </dependency>
            </dependencies>
        </plugin>

提前致谢!

3 个答案:

答案 0 :(得分:0)

默认情况下,您可以将flyway.skip设置为true,只有在您想要运行迁移时才将其设为false。

此外,预包装后会进行预集成测试。这就是为什么不用mvn clean package调用它。

答案 1 :(得分:0)

请确认您在要运行的模块中拥有自己的<plugin>部分。

不仅仅在<pluginManagement>部分内。

答案 2 :(得分:0)

一个插件可能包含多个目标,因为在这种情况下,您不仅要迁移,还要清理,信息等。除非您在项目的执行中定义要运行的目标,否则它们将不会运行

您必须在插件xml定义的执行块中指定目标,如下所示:

  <plugin>             
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-maven-plugin</artifactId>  
        <version>3.0</version> 
        <executions>
            <execution>
                <goals>
                    <goal>migrate</goal>
                </goals>
            </execution>
        </executions>            
        <configuration>
            <driver>${db-driver-name}</driver>
            <url>${db-url}</url>
            <user>${db-user-name}</user>
            <password>${db-user-password}</password>
            <locations>
                <location>filesystem:./src/main/resources/db/scripts/V${db-version}</location>
            </locations>
            <schemas>
                <schema>schema</schema>
            </schemas>
        </configuration>
        <dependencies> 
            <dependency>
                <groupId>oracle.jdbc</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>11.2.0.4</version>
            </dependency>
        </dependencies>
    </plugin>