에 대한의 InputStream을 가져올 수 없습니다 나는 migrateDb가 Gradle을 프로젝트에 이동 경로를 사용하여 문제가 가끔 만 때로는 모든 시간 만 발생하지 않습니다Gradle을하고 철새 이동 경로는 : 자원
Unable to obtain inputstream for resource: META-INF/db/mysql/V1__script.sql
이 오류가 발생하지만이 발생하는 경우 한 그것은 꽤 끈기 있고 또한 프로젝트의 깨끗한/재건은 그것을 해결하지 못합니다.
언급 된 SQL 스크립트는 다중 모듈 프로젝트의 일부로 프로젝트에서 참조되는 JAR 파일 내에 포함되어 있습니다.
내 연구는 https://github.com/flyway/flyway/issues/702으로 나를 데려왔다. 그러나 이것은 올바른 길로 인도하지 못했습니다.
flyway가 classpath 검색 중에 파일을 찾을 수 있지만 입력 스트림을 가져올 수 없다는 사실 또한 매우 혼란 스럽습니다.
추가 정보가 필요하면 문의하십시오.
추가 디버깅 : 새로운 파일이 DB JAR에 추가되는 즉시 오류가 발생한 것으로 보입니다. 다시 작성한 후 migrateDb 오류가 발생합니다. 스크립트를 다시 제거하면 스크립트가 생성 된 JAR에 더 이상 없지만 오류가 계속 발생합니다. 그래서 스크립트를 검색하고 입력 스트림을 검색하는 클래스 패스가 다르다고 생각합니다. 아무도 어떤 차이가 있을지 알고 있습니까?
전체 스택 추적 :
Caused by: org.flywaydb.core.api.FlywayException: Unable to obtain inputstream for resource: META-INF/db/mysql/V1__script.sql
at org.flywaydb.core.internal.util.scanner.classpath.ClassPathResource.loadAsString(ClassPathResource.java:84)
at org.flywaydb.core.internal.resolver.sql.SqlMigrationResolver.scanForMigrations(SqlMigrationResolver.java:139)
at org.flywaydb.core.internal.resolver.sql.SqlMigrationResolver.resolveMigrations(SqlMigrationResolver.java:99)
at org.flywaydb.core.internal.resolver.sql.SqlMigrationResolver.resolveMigrations(SqlMigrationResolver.java:49)
at org.flywaydb.core.internal.resolver.CompositeMigrationResolver.collectMigrations(CompositeMigrationResolver.java:122)
at org.flywaydb.core.internal.resolver.CompositeMigrationResolver.doFindAvailableMigrations(CompositeMigrationResolver.java:104)
at org.flywaydb.core.internal.resolver.CompositeMigrationResolver.resolveMigrations(CompositeMigrationResolver.java:90)
at org.flywaydb.core.internal.resolver.CompositeMigrationResolver.resolveMigrations(CompositeMigrationResolver.java:43)
at org.flywaydb.core.internal.info.MigrationInfoServiceImpl.refresh(MigrationInfoServiceImpl.java:114)
at org.flywaydb.core.internal.command.DbValidate$2.call(DbValidate.java:164)
at org.flywaydb.core.internal.command.DbValidate$2.call(DbValidate.java:157)
at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75)
at org.flywaydb.core.internal.command.DbValidate.validate(DbValidate.java:157)
at org.flywaydb.core.Flyway.doValidate(Flyway.java:1280)
at org.flywaydb.core.Flyway.access$100(Flyway.java:71)
at org.flywaydb.core.Flyway$1.execute(Flyway.java:1176)
at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168)
at org.flywaydb.core.Flyway.execute(Flyway.java:1650)
at org.flywaydb.core.Flyway.migrate(Flyway.java:1168)
at org.flywaydb.gradle.task.FlywayMigrateTask.run(FlywayMigrateTask.java:28)
at org.flywaydb.gradle.task.AbstractFlywayTask.runTask(AbstractFlywayTask.java:382)
Gradle을 작업 :
// task that migrates the database
task migrateDb(type: org.flywaydb.gradle.task.FlywayMigrateTask) {
// parse hibernate config
def hibernateConfig = parseHibernateConfigByStageParameter()
// set config
url = hibernateConfig.url
driver = hibernateConfig.driver
user = hibernateConfig.username
password = hibernateConfig.password
locations = [ "classpath:${flywayDbPath}/${hibernateConfig.dbType}" ]
table = 'schema_version'
outOfOrder = true
ignoreMissingMigrations = true
}
Gradle을 의존성 :
// dependencies
dependencies {
[...]
runtime project(':core:db:mysql')
[...]
}
Gradle 빌드 파일의 관련 부분을 제공 할 수 있습니까? – saw303
@ saw303 나는 Gradle 작업을 추가했다. 그 밖의 무엇이 필요합니까? – Werzi2001
그리고 SQL 스크립트가 위치한 Jar는 Gradle 빌드 종속성으로 정의되거나 어디에 있습니까? – saw303