2017-05-17 11 views
1

ファイルシステムを正しく使用しているときに、私はFLywayのクラスパスで場所を設定する際に問題があります。FlyWayDB - ロケーションクラスパスを解決できません

例:

この作業: 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");

に動作していない場合には、その投げエラー:

[WARNING] [] [org.flywaydb.core.internal.util.scanner.classpath.ClassPathScanner] [tid: _ThreadID=19 _ThreadName=RunLevelControllerThread-xx] [timeMillis: 1495044249009] [levelValue: 900] [[ Unable to resolve location classpath: ProjectName/src/main/java/com/some1/some2/some3/database/migration]]

私はキーワード「クラスパス」せずに、上記のように、いくつかの区切り文字を試してみてください、といつも私は、cを使用したいときlasspathその投げている "場所を解決することができません..."。

私はフライウェイのデフォルトのSQLファイルやディレクトリの名前を移行し、場所を設定していない場所、その作業罰金を変更すると、私は

edit./ 4.1.2のverやのにJavaAPI(https://flywaydb.org/getstarted/firststeps/api)によってフライウェイを使用

。だから結論は間違ってクラスパスを書いたことですが、何が間違っていますか?

デフォルト設定:SQLファイル用 1.メイン/リソース/ デシベル/移行 <デフォルトのフォルダは

いくつかの提案の場所

を設定しない 2を移行するには?

答えて

0

'classpath'は本当にクラスパスを意味し、クラスパスをパスで拡張することはできません。

私は私はあなたの移行がパスにjarファイルにパッケージ化されます「com/some1/some2/some3/database/migration

=考えるよりあなたのクラスパスの宣言を参照してください>ので、あなたのクラスパスの設定は次のようになりなければなりません:場合

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

あなたはベースの場所としてsrc/main/resourcesとより良い経験を持っているSQLファイルベースの移行を使用します。

+0

私はこれを試して、私はそれがisntの作業を書いた。キーワード "classpath"を宣言する必要はありません。デフォルトのフライウェイのキーワード(クラスパス、ファイルシステム)がなくても、パスだけを置くとクラスパスが同じように扱われるからです。ドキュメントに従ってください: "クラスパスから始まる固定されていない場所または場所"。 https://flywaydb.org/documentation/api/javadoc/org/flywaydb/core/Flyway.html#setLocations-java.lang.String...- – newOne

関連する問題