로드 된 종속성 jar flyway-core-4.0.3.jar를 사용하는 Java 클래스를 작성했습니다. taskdef 액션 클래스 경로와 이동 경로 항아리의 메소드를 호출하는 다음 내가 개미 사용하여 taskdef 조치 클래스를 유발하고있는 문제를org.flywaydb.core.api.FlywayException : 내 Java 클래스가 ant taskdef에서 트리거 될 때 JDBC 드라이버를 인스턴스화 할 수 없습니다.
public static boolean executeFlywayMigrate(String connectionUrl, String username, String password,
String scriptLocation, String[] databaseNames, Map<String, String> componentProperties,
boolean validateOnMigrate)
throws SQLException {
LOGGER.info("Database schemas for migration are :" + Arrays.toString(databaseNames));
try {
Flyway flyway = new Flyway();
flyway.setLocations(scriptLocation);
flyway.setSchemas(databaseNames);
flyway.setBaselineOnMigrate(true);
flyway.setDataSource(connectionUrl, username, password);
if (componentProperties != null) {
flyway.setPlaceholders(componentProperties);
}
flyway.setValidateOnMigrate(validateOnMigrate);
flyway.repair();
flyway.migrate();
} catch (RuntimeException e) {
LOGGER.error("Database migration failed.", e);
throw new SQLException(e);
}
의 원인이되는 코드의 일부이다. taskdef 조치에 대한 classpathref를주었습니다. 이동 경로는 (내 경우에는 내가 모두 MySQL의 커넥터 - 자바-5.1.39-bin.jar를하고 sqljdbc41.jar하지만 같은 문제를 시도 DB를 항아리에 대한 seach하려고 할 때
<taskdef name="ExecuteMigrationScripts" classname="com.install.common.db.action.ExecuteMigrationScripts"
classpathref="class.dependencies" loaderref="class.dependencies.loader"/>
<ExecuteMigrationScripts/>
문제가 발생합니다 발생).
참고 : 데이터베이스에 연결하고 샘플 데이터베이스 스키마를 만드는 taskdef 작업에서 다른 클래스를 트리거하면 정상적으로 작동하고 taskdef 작업에 언급 된 클래스 경로에서 동일한 db jar를로드 할 수 있습니다 그러나 flyway가 db 단지를 찾으려고 할 때만 문제가 발생합니다.
여기에 뭔가 빠진 경우 도와주세요.