2015-06-04 37 views
1

我們的應用程序一直在使用flyway 3.0和tomcat 7正常工作。我們在類路徑中使用基於sql的遷移。Flyway無法掃描升級到tomcat後的類路徑中的sql遷移8

最近我們試圖升級我們的應用程序以使用tomcat 8.之後,flyway無法在我們的類路徑中找到sql遷移。我們一直在用unpackWAR = false來使用WAR部署。僅供參考,使用unpackWAR = true,問題不再是可重現的。

我試圖調試到flyway代碼庫一些什麼,並試圖找出升級到tomcat 8之前和升級到tomcat 8之後的差異。我發現一個關鍵區別是,在ClassPathScanner.getLocationUrlsForPath( ),之前我們用來查找以file:protocol爲前綴的WAR文件的位置,但是現在在tomcat 8中,我們正在查找以jar:protocol爲前綴的WAR文件的位置。這似乎沒有問題。但是,這會導致執行JarFileClassPathLocationScanner.findResourceNamesFromJarFile()中的代碼。在這個方法裏面,jar元素的條目名稱就像「WEB-INF/classes/our_path/schema/V1.0.sql」等等,但是指定的位置只有our_path/schema/V1.0.sql。由於有狀況,

如果(entryName.startsWith(位置)){

我們的架構遷移沒有被拾起。

有什麼想法?這聽起來像一個錯誤?

+0

只是添加,下面的鏈接似乎有點類似於我的問題。唯一的一點我沒有使用Apache Karaf。 https://github.com/flyway/flyway/issues/1007 –

回答

1

這應該開箱即用。請在問題跟蹤器中提交一個問題,並複製步驟(或者更好的一個小的repro回購)。

+0

謝謝,我將提出一個步驟來重現問題。如果問題無法複製,那麼我將非常樂意添加可重複的回購。 –