1

環境

  • Jboss 6
  • フライウェイ1.5
  • スプリングコア2.5.6

戦争の構造

ei-web-1.0.1-SNAPSHOT.war
    |WEB-INF
      |classes
        |db
          |migrations
            |ei
              |V5.7.0.sql
              |V5.7.1.sql
              |V5.7.2.sql

問題

JBossの起動時にロードされたMBean内でFlyway移行を実行しようとすると、次のスタックトレースが取得されます。

java.io.FileNotFoundException:URL [vfs:/C:/jboss-6.1.0.Final/server/ei/deploy/ei-web-1.0.1-SNAPSHOT.war/WEB-INF/classes/db/migrations/ ei /]はファイルシステムに存在しないため、絶対ファイルパスに解決できません:vfs:/C:/jboss-6.1.0.Final/server/ei/deploy/ei-web-1.0.1-SNAPSHOT。 war / WEB-INF / classes / db / migrations / ei /

手がかり

  • フライウェイのベースディレクトリはdb/migrations/eiです
  • フライウェイの初期バージョンは5.7.0です。
  • スタンドアロンで起動した場合、移行は問題ありません
  • 私見ですが、問題はクラスパスディレクトリのスキャンに失敗した結果です。

com.googlecode.flyway.core.migration.sql.SqlMigrationResolver(L.99)を参照してください

final String searchPattern = "**/" + sqlMigrationPrefix + "?*" + sqlMigrationSuffix;
Resource[] resources = new PathMatchingResourcePatternResolver(classLoader)
                .getResources("classpath:" + searchRoot + searchPattern);

私の場合、resourcesは空の配列を返します。

4

1 に答える 1

1

これはhttps://github.com/flyway/flyway/issues/91と同じ問題のように聞こえます

お気軽に投票してください:-)

于 2012-03-22T20:28:13.963 に答える