2017-04-07 1 views
0

Ich versuche, Flyway in meinem Ant-Projekt zu verwenden, um DDL-Skripts auszuführen. Ich habe es geschafft, den Klassenpfad so zu konfigurieren, dass Flyway die Migrationsskripte sieht. Als ich den Zugweg ausführen: Aufgabe migrieren, bekomme ich diese Ausnahme:Flyway Ant versucht, .sql-Datei als Zip zu öffnen, schlägt mit ZipException fehl

Unable to obtain resource from (...)/src/ddl/V1__create_tables_logging.sql: java.util.zip.ZipException: error in opening zip file 
[flyway:migrate] Unable to obtain resource from (...)/src/ddl/V1__create_tables_logging.sql: 
[flyway:migrate] java.util.zip.ZipException: error in opening zip file 

Es gibt einen Vorschlag am Ende:

[flyway:migrate] Possible solution: run the Ant javac and copy tasks first so Flyway can find the migrations 

Aber mein Projekt ist nicht eine Java-Anwendung, habe ich keine Java-Quellen mit javac kompiliert werden. Muss Flyway die Migrationsskripten in ein Glas verpacken lassen? Können nicht einfach einige Textdateien mit SQL-Anweisungen ausgeführt werden?

Antwort

0

Leider haben Sie keine Konfiguration zur Verfügung gestellt, ohne diese ist es schwer zu sagen, was genau dieses Problem verursacht.

Aber es scheint mir seltsam, dass Sie nicht location Eigenschaft der Aufgabe verwenden, aber classpath. Versuchen Sie, das Verzeichnis mit Ihren Migrationsskripts wie folgt anzugeben:

<flyway:migrate> 
    <locations> 
     <location path="path/to/migrations"/> 
    </locations> 
    ... 
</flyway:migrate> 
+0

Die Dokumentation ist irreführend, es heißt, dass die Migrationen auf dem Klassenpfad sein sollten, aber das funktioniert nur, wenn Sie sie zuvor in jars kompilieren. Was für mich funktionierte, ist die Eigenschaft flyway.locations zu verwenden und den Pfad mit "filesystem:" voranzutreiben, wie eines der Beispiele in der Dokumentation zeigt. – lukfi

Verwandte Themen