2017-04-07 56 views
0

我想在我的Ant项目中使用Flyway运行DDL脚本。我设法配置了类路径,以便Flyway能够看到迁移脚本。当我跑飞路:迁移任务,我得到这个异常:Flyway Ant尝试打开.sql文件作为zip,失败并出现ZipException

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语句运行一些文本文件吗?

回答

0

不幸的是,你没有提供你有的配置,没有它很难说,究竟是什么原因导致了这个问题。

但是我觉得很奇怪,你没有使用location属性的任务,而是classpath。尝试使用您的迁移脚本指定目录,如下所示:

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

该文档具有误导性,它表示迁移应该在类路径中,但只有在您事先将它们编译为jars时才有效。作为我的工作是使用flyway.locations属性,并在文件显示的示例之一中预先加上“filesystem:”路径。 – lukfi

相关问题