【问题标题】:Gradle - How can I do flyway migrations in itest sourcesetGradle - 我如何在 itest 源集中进行飞行路径迁移
【发布时间】:2020-01-26 11:41:22
【问题描述】:

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

  • itest 没有运行,因为test 阶段有一些错误,所以下一步itest 将不会继续
  • itest 也适用迁移,我已经仔细检查了日志并且可以确认。我搜索itest 日志flyway,我看到了。

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

我有资源集:

  • 主要
  • 测试
  • 测试

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 时,它们没有。我明白,如果我在test 之后强制执行itest,就像现在这样,我可以保证;但有时间我只想运行itest

如何更改此脚本?

【问题讨论】:

  • 您如何为正常的测试任务应用迁移?您可能必须为 itest 做同样的事情。
  • 是的,但在 build.gradle 中,这不是 flywayMigrate 部分。所以我不知道怎么做。
  • @BjørnVester 对不起,我忘了说我用的是 Spring Boot,所以有FlywayAutoconfiguration

标签: gradle integration-testing flyway


【解决方案1】:

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

【讨论】:

  • 试过了,但是integration.gradle的解析失败了。似乎任务没有在任何地方定义。顺便说一句,我使用 Spring Boot
  • 我的意思是 flywayMigrate 在任何地方都找不到/未定义。
  • 这里没有使用gradle flyway插件,这就是flywayMigrate不可用的原因。但是我想做Flyway.migrate(),就像Spring Boot在FlywayAutoconfiguration中做的那样,因为flywayMigrate总是需要flyway {}属性,比如userurlpassword,而且我看不到一个简单的方法从application.yml 读取这些属性,特别是当它们是特定于配置文件时。
  • @WesternGun 有 spring boot 自动运行 Flyway 文档:docs.spring.io/spring-boot/docs/current/reference/html/…,他们提供了示例项目:github.com/spring-projects/spring-boot/tree/v2.1.8.RELEASE/…
  • 对不起,但这不是我的情况:我想在另一个源集中迁移 flyway,itest,既不是main,也不是test。该示例是一个非常基本的示例,包含的源集不超过maintest
猜你喜欢
  • 2022-07-12
  • 2018-12-05
  • 2016-03-13
  • 2017-12-07
  • 2014-01-29
  • 2016-09-19
  • 2018-01-30
  • 2019-02-23
  • 2016-11-25
相关资源
最近更新 更多