首页 > 解决方案 > Gradle - 我如何在 itest 源集中进行飞行迁移

问题描述

编辑:问题解决了,因为我注意到:

所以这个问题是一个错误。对不起。

我有源集:

定义itest如下:( project/gradle/integration.gradle)

sourceSets {
    itest {
        java.srcDir file('src/itest/java')
        resources.srcDir file('src/itest/resources')
        compileClasspath += sourceSets.main.output + sourceSets.test.output
        compileClasspath += configurations.testCompileClasspath
        compileClasspath += configurations.testRuntimeClasspath
        runtimeClasspath += output + compileClasspath + test.output
        annotationProcessorPath += configurations.testAnnotationProcessor
    }
}

task itest(type: Test) {
    description = 'Runs the integration tests.'
    group = 'verification'
    testClassesDirs = sourceSets.itest.output.classesDirs
    classpath = sourceSets.itest.runtimeClasspath

    mustRunAfter test
    useJUnitPlatform()
}

当我运行时gradle test itest,我看到应用了迁移,但是当我运行时gradle itest它们没有。我明白,如果我itest在 之后强制执行test,就像现在这样,我可以确保;但有时间我只想跑itest

如何更改此脚本?

标签: gradleintegration-testingflyway

解决方案


Migrate 任务运行总是因为gradle flywayMigrate任务触发。

也许某些插件更改了默认设置以使test任务依赖于flywayMigrate.

因此,如果您希望自己的任务触发flywayMigrate,您可以这样做:

itest.dependsOn flywayMigrate  

// reference:
clean.dependsOn flywayRepair  # To repair the Flyway metadata table
build.dependsOn flywayMigrate  # To migrate the schema to the latest version

推荐阅读