【问题标题】:Flyway Gradle plugin - Circular dependencyFlyway Gradle 插件 - 循环依赖
【发布时间】:2014-04-03 11:50:47
【问题描述】:

我有一个项目使用 gradle、flyway gradle 插件、mybatis 生成器和 postgres。在我的 build.gradle 中,我有:

  compileJava.dependsOn('myBatisGenerator')

我想在 myBatisGenerator 运行之前运行 flywayMigrate 任务。所以我做了以下事情:

        myBatisGenerator.dependsOn('flywayMigrate')

当我尝试使用 gradle test 运行构建时,出现以下错误:

FAILURE: Build failed with an exception.

* What went wrong:
Circular dependency between the following tasks:
:classes
+--- :compileGroovy
|    \--- :compileJava
|         \--- :myBatisGenerator
|              \--- :flywayMigrate
|                   \--- :testClasses
|                        +--- :compileTestGroovy
|                        |    +--- :classes (*)
|                        |    \--- :compileTestJava
|                        |         \--- :classes (*)
|                        \--- :compileTestJava (*)
\--- :compileJava (*)

(*) - details omitted (listed previously)

我不确定为什么从 flywayMigrate 插件中调用 compileTestJava。任何想法如何解决这个问题并且仍然在 mybatis 生成器之前运行 flyway 插件?

【问题讨论】:

    标签: gradle circular-dependency flyway mybatis-generator


    【解决方案1】:

    我查看了 flyway gradle 插件代码 (https://github.com/flyway/flyway/tree/master/flyway-gradle-plugin),我的猜测是 flyway 任务依赖于编译任务以支持使用 flyway Java api 编写的迁移。

    flyway 插件似乎假设如果项目是 java 项目,那么您正在使用 Java api。

    从字里行间看,flyway 似乎希望您有一个单独的 gradle 子项目来进行迁移。

    因此,将您的迁移移至名为“迁移”的子项目。然后就可以了

    myBatisGenerator.dependsOn(':migrations:flywayMigrate')
    

    和 ':migrations:flywayMigrate' 将只依赖于 ':migrations:compileTestJava' 而不是你的主 ':compileTestJava' (即使这样也只有当 'migrations' 是一个 java 项目时)

    【讨论】:

    • 或者,您可以使用 flywayMigrate.taskDependencies.values -= "testClasses" 之类的方法删除 taskDependency
    【解决方案2】:

    替代解决方法:https://github.com/flyway/flyway/issues/775

    project.afterEvaluate {
        flywayClean.dependsOn -= testClasses
        flywayMigrate.dependsOn = [processResources, processTestResources]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 2016-06-17
      • 2020-01-30
      相关资源
      最近更新 更多