依存関係jar flyway-core-4.0.3.jarを使用してJavaクラスを作成しました。 taskdefアクションクラスパスとフライウェイジャー内のメソッドを呼び出す、次は私がのtaskdefアクションを使用してアリを持つクラスをトリガーしています発行しorg.flywaydb.core.api.FlywayException:Javaクラスがantタスク定義からトリガーされたときに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-コネクタのjava-5.1.39-bin.jarをしてsqljdbc41.jarが、同じ問題の両方を試してみましたデシベルジャーのためのWiki検索しようとしたときにのみ問題が発生<taskdef name="ExecuteMigrationScripts" classname="com.install.common.db.action.ExecuteMigrationScripts"
classpathref="class.dependencies" loaderref="class.dependencies.loader"/>
<ExecuteMigrationScripts/>
発生する)。
注:データベースに接続してサンプルデータベーススキーマを作成しようとするtaskdefアクションから別のクラスをトリガーすると、正常に動作し、taskdefアクションに記述されているクラスパスから同じdb jarをロードできますこの問題は、フライウェイがdb jarの位置を特定しようとしている場合にのみ発生します。
ここに何か不足している場合は私を助けてください。