FlyWayDB - 无法解析位置类路径

时间:2017-05-17 18:21:56

标签: java flyway

我在使用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] [[Unable]解析位置类路径:ProjectName / src / main / java / com / some1 / some2 / some3 / database / migration]]

我尝试了一些上面的分隔符,没有关键字“classpath”,并且总是在我想使用classpath时抛出“无法解析位置......”。

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

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

默认配置: 1. main / resources / db / 迁移<要迁移的sql文件的默认文件夹 2.没有设置位置

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

=&GT;所以你的类路径配置必须如下所示:

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

如果您使用基于SQL文件的迁移,我可以更好地使用src/main/resources作为基本位置。

答案 2 :(得分:0)

建议不要在数据库构建脚本中创建完整的软件包,而建议在Java构建路径Project -> Properties -> SourceTab -> AddFolder上创建一个文件夹,它会将脚本带到具有所需文件夹名称的类路径,并将该名称保存在JavaClass中

“ classpath:文件夹名称”