gpt4 book ai didi

gradle - Flyway Gradle 插件 - 循环依赖

转载 作者:行者123 更新时间:2023-12-01 11:03:28 31 4
gpt4 key购买 nike

我有一个使用gradle、flyway gradle plugin、mybatis generator和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。有什么想法可以解决这个问题并让 flyway 插件在 mybatis 生成器之前运行吗?

最佳答案

我查看了 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 项目时)

关于gradle - Flyway Gradle 插件 - 循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22129694/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com