使用 Jenkins 和 Gradle 运行 Flyway 迁移 - 无法解析位置类路径:db/migration
Posted
技术标签:
【中文标题】使用 Jenkins 和 Gradle 运行 Flyway 迁移 - 无法解析位置类路径:db/migration【英文标题】:Running Flyway migrations with Jenkins and Gradle - Unable to resolve location classpath:db/migration 【发布时间】:2018-03-18 16:52:12 【问题描述】:通过 jenkins 运行 flyway 时,我在控制台输出中收到以下错误:
Unable to resolve location classpath:db/migration
我的项目源码结构如下:
Project1
|--WEB-INF
|--src
|--java source
|--flywaysrc
|-- flyway source
我的 build.gradle 对 flyway 和 java 有单独的 sourceSet:
sourceSets
main
java
srcDir 'WEB-INF/src'
flyway
java
srcDir 'WEB-INF/flywaysrc'
output.classesDir='bin'
它还包含一个flyway条目,其中locations数组设置如下:
flyway
...other configuration params...
ArrayList<String> locationsArray = new ArrayList<String>();
locationsArray.add("classpath:db/migration");
locationsArray.add("filesystem:/path/to/eclipse/Project1/WEB-INF/Release/old_release");
locationsArray.add("filesystem:/path/to/eclipse/Project1/WEB-INF/flywaysrc");
locations=locationsArray
...other configuration params...
知道是什么原因造成的/您需要什么信息来提供更多有助于解决此问题的输入?
【问题讨论】:
【参考方案1】:默认情况下,flyway 在类路径的 db/migrations 文件夹中查找迁移。如果此 db/migrations 存在并且它包含迁移 sqls flyway 将选择它。也可以使用属性 [locations]:(https://flywaydb.org/documentation/commandline/info)
自定义迁移文件夹位置您确定 flywaysrc 文件夹中有 db/migrations 并且 db/migrations 包含迁移 sql 吗?
【讨论】:
是的,我确定。 Flyway 是通过 gradle 运行的,我在上面的问题中添加了一个配置的 sn-p ......奇怪的是我可以从 eclipse 运行 flyway 并毫无问题地更新数据库。当我通过 Jenkins 运行 flyway 任务时,它失败并出现上述错误。以上是关于使用 Jenkins 和 Gradle 运行 Flyway 迁移 - 无法解析位置类路径:db/migration的主要内容,如果未能解决你的问题,请参考以下文章
windows环境下jenkins+gradle+Android 自动打包部署
Jenkins 和 gradle - 使用最新版本的 CI 依赖项构建项目,用于生产的特定版本