我已經編寫了一個java類,它使用依賴性jar flyway-core-4.0.3.jar從的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行動的一部分。我已經爲taskdef操作提供了classpathref。只有當飛路試圖SEACH爲DB的jar(在我的情況我試圖與這兩個使用mysql-connector-java的39年5月1日 - bin.jar和sqljdbc41.jar但同樣的問題時
<taskdef name="ExecuteMigrationScripts" classname="com.install.common.db.action.ExecuteMigrationScripts"
classpathref="class.dependencies" loaderref="class.dependencies.loader"/>
<ExecuteMigrationScripts/>
問題出現)。
注意:如果我觸發與taskdef操作不同的類,它嘗試連接到數據庫並創建示例數據庫模式,該模式工作正常,可以從taskdef操作中提到的類路徑加載相同的數據庫jar但是這個問題只有在飛路試圖找到數據庫jar時纔會出現。
如果我在這裏失去了一些東西,請幫助我。