Flyway Ant试图以zip格式打开.sql文件,但由于ZipException而失败

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

我试图在我的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 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:”,如文档中的一个示例所示。