Flyway Ant试图以zip格式打开.sql文件,但由于ZipException而失败
我试图在我的Ant项目中使用Flyway来运行DDL脚本。我设法配置了类路径,以便Flyway能够看到迁移脚本。运行flyway:migrate任务时,出现以下异常:Flyway Ant试图以zip格式打开.sql文件,但由于ZipException而失败,ant,flyway,Ant,Flyway,我试图在我的Ant项目中使用Flyway来运行DDL脚本。我设法配置了类路径,以便Flyway能够看到迁移脚本。运行flyway:migrate任务时,出现以下异常: 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 re
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
最后有一个建议:
[flyway:migrate] Possible solution: run the Ant javac and copy tasks first so Flyway can find the migrations
但是我的项目不是Java应用程序,我没有Java源代码可以用javac编译。Flyway是否需要将迁移脚本打包到jar中?它不能简单地用SQL语句运行一些文本文件吗?不幸的是,您没有提供现有的配置,如果没有配置,很难判断到底是什么导致了这个问题 但我觉得奇怪的是,您没有使用任务的
location
属性,而是使用classpath
。尝试使用迁移脚本指定目录,如下所示:
<flyway:migrate>
<locations>
<location path="path/to/migrations"/>
</locations>
...
</flyway:migrate>
...
该文档有误导性,它说迁移应该在类路径上,但这只有在您事先将它们编译到JAR时才有效。对我来说,有效的方法是使用flyway.locations属性并在路径前面加上“filesystem:”,如文档中的一个示例所示。