我有一个多项目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
如何确保schema
或codegen
发生更改时codegen:migrate
始终重新运行?
1条答案
按热度按时间dw1jzc5e1#
如果
migrate
应该在codegen
发生变化时运行,那么这些就是输入。我会将
schema
和codegen
项目合并为一个,然后配置输入,使触发generate
运行的文件也声明为migrate
的inputs
。