Flyway 'migrate' ant error error: «Невозможно найти путь для миграции SQL [...]» - PullRequest
0 голосов
/ 13 февраля 2012

Не могу указать правильный путь к каталогу с файлами .sql. Я попытался установить атрибут «baseDir» для разных каталогов в разных местах (конечно, в classpath) и задать другой путь к классу. Сценарии сборки всегда отображаются с сообщением « Невозможно найти путь для миграций sql: [uri к каталогу с. файлы sql] ”.

Это не похоже на выпуск 156 , как было сказано в аналогичный вопрос , потому что, если я удалю код в SqlMigrationResolver.java

if (StringUtils.hasText(baseDir) && !new ClassPathResource(baseDir + "/",
    classLoader).exists()) {
  LOG.warn("Unable to find path for sql migrations: " + baseDir);
  return migrations;
}

как было сказано в Комментарий № 9 Я все еще ловлю

deployDB:
[flyway:migrate] com.googlecode.flyway.core.exception.FlywayException: Error loading sql migration files
[flyway:migrate] Caused by java.io.FileNotFoundException: class path resource [db/migration/] cannot be resolved to URL because it does not exist

BUILD FAILED
c:\DeployTest\build.xml:208: Flyway Error: com.googlecode.flyway.core.exception.FlywayException: Error loading sql migration files

Пролёт падает на

resources = new PathMatchingResourcePatternResolver(classLoader)
        .getResources("classpath:" + searchRoot + searchPattern);

Невозможно выполнить метод getResources.

Это не похоже на ошибку, похоже, что я не могу установить правильный uri в каталог с моими SQL-скриптами = (

Пожалуйста, помогите мне установить этот проклятый ури!

Мой build.xml:

<target name="init-flyway">
  <taskdef uri="antlib:com.googlecode.flyway.ant"
           resource="com/googlecode/flyway/ant/antlib.xml"
  />
  <property name="flyway.driver" value="${dbDriver}"/>
  <property name="flyway.url" value="${dbUrl}"/>
  <property name="flyway.user" value="${dbScheme}"/>
  <property name="flyway.password" value="${dbPass}"/>
  <property name="flyway.baseDir" value="\db\migration"/>
  <property name="flyway.classpath" value="c:\DeployTest"/>
</target>

<target name="deployDB" depends="init-flyway">
  <flyway:migrate/>
</target>

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Вместо этого:

<path id="flyway.classpath"> 
    <fileset dir="c:\DeployTest"/> 
</path>

Использование:

<path id="flyway.classpath">  
      <pathelement location="c:\DeployTest"/>
</path>  
2 голосов
/ 24 февраля 2012

Попробуйте изменить flyway.classpath из свойства на путь .

Для вашего случая это означает изменение этого значения:

<property name="flyway.classpath" value="c:\DeployTest"/>

к этому:

<path id="flyway.classpath">
    <fileset dir="c:\DeployTest"/>
</path>
...