确保任务在其任何依赖项在gradle中不是最新时始终重新运行

fnvucqvd  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(164)

我有一个多项目Gradle存储库,其中包含用于处理数据库迁移的单独项目(schema)和代码生成(codegen),schema项目有一个:migrate任务,用于对数据库进行迁移,codegen项目有一个:generate任务,依赖于迁移后的数据库,生成一些java代码。假设存在依赖于codegen:generate的名为app的第三个项目。
在CI中,gradle构建使用远程构建缓存。这在大多数情况下都能很好地工作。schema中的更改会导致运行如下所示:

./gradlew app:build

> schema:migrate
> codegen:generate
> app:build

SUCCESS

仅对app进行更改也可以很好地工作:

./gradlew app:build

> schema:migrate UP-TO-DATE
> codegen:generate UP-TO-DATE
> app:build

SUCCESS

如果codegen项目中有更改,但schema没有更改,则会出现此问题:

./gradlew app:build

> schema:migrate UP-TO-DATE
> codegen:generate
  (Error here because a migrated database does not exist in CI,
   because `:migrate` did no work)

FAILURE

如何确保schemacodegen发生更改时codegen:migrate始终重新运行?

dw1jzc5e

dw1jzc5e1#

如果migrate应该在codegen发生变化时运行,那么这些就是输入。
我会将schemacodegen项目合并为一个,然后配置输入,使触发generate运行的文件也声明为migrateinputs

相关问题