![](/img/trans.png)
[英]Running Flyway migrations with Jenkins and Gradle - Unable to resolve location classpath:db/migration
[英]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.