繁体   English   中英

FlyWayDB - 无法解析位置类路径

[英]FlyWayDB - Unable to resolve location classpath

我在 FLyway 中使用类路径设置位置时遇到问题,当我使用文件系统时它工作正常。

例子:

这个工作: this.setLocations("filesystem:C:\\Projects\\ProjectName\\src\\main\\java\\com\\some1\\some2\\some3\\database\\migration");

这不起作用(我尝试分隔符:“\”、“.”、“/”): this.setLocations("classpath:ProjectName/src/main/java/com/some1/some2/some3/database/migration");

当不工作时,它的抛出错误:

[警告] [] [org.flywaydb.core.internal.util.scanner.classpath.ClassPathScanner] [tid: _ThreadID=19 _ThreadName=RunLevelControllerThread-xx] [timeMillis: 1495044249009] [levelValue: 900] [[无法解析位置类路径:ProjectName/src/main/java/com/some1/some2/some3/database/migration]]

我尝试了一些如上所述的定界符,没有关键字“类路径”,并且总是在我想使用类路径时抛出“无法解析位置...”。

我使用 flyway ver 4.1.2 和 JavaAPI ( https://flywaydb.org/getstarted/firststeps/api )

编辑./ 当我更改迁移 sql 文件的位置和 Flyway 的默认目录名称,而不是设置位置时,它工作正常。 所以,结论是我写错了类路径,但我做错了什么?

默认配置: 1. main/resources/ db / migration < default folder for sql files to migrate 2. not setting location

一些建议?

'classpath' 意味着真正的类路径,你不能用路径扩展你的类路径。

当我看到您的类路径声明时,我认为您的迁移将被打包在一个路径为“ com/some1/some2/some3/database/migration ”的 jar 中

=> 所以你的类路径配置必须是这样的:

classpath:com/some1/some2/some3/database/migration

如果您使用基于 SQL 文件的迁移,我对src/main/resources作为基本位置有更好的体验。

我在同样的问题上挣扎了几天。 最终帮助我的是修改pom.xml ,以便<build>节点列出所有带有属性文件的位置:

<project...>
  ...
  <build>
     <resources>
        ...
        <resource>
           <directory>src/main/resources</directory>
           <includes>
             <include>*.*</include>
             <include>sql/migration/*</include>
           </includes>
        </resource>
     </resources>
  </build>
</project>

建议在 java 构建路径Project -> Properties -> SourceTab -> AddFolder创建一个文件夹,而不是为 DB 迁移脚本创建完整的包,它将脚本带到具有所需文件夹名称的类路径,并将该名称保留到您的 JavaClass 中

“类路径:文件夹名”

对于 meu,@Tinki 给出的 pom.xl 答案中的资源解决了我的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM