or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

callbacks.mdconfiguration.mdcore-operations.mderror-handling.mdindex.mdjava-migrations.mdmigration-info.md
tile.json

tessl/maven-org-flywaydb--flyway-core

Database migration tool that enables versioned database schema evolution with simple SQL scripts and Java migrations

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.flywaydb/flyway-core@11.12.x

To install, run

npx @tessl/cli install tessl/maven-org-flywaydb--flyway-core@11.12.0

index.mddocs/

Flyway

Flyway is a database migration tool that provides reliable database schema evolution through versioned SQL scripts and Java migrations. It enables developers to manage database changes across all environments using simple SQL files or programmatic Java migrations, with automatic discovery and execution order management.

Package Information

  • Package Name: flyway-core
  • Package Type: maven
  • Language: Java
  • Installation: <dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>11.12.0</version></dependency>

Core Imports

import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.configuration.FluentConfiguration;
import org.flywaydb.core.api.output.MigrateResult;

For dependency injection frameworks:

import org.flywaydb.core.api.configuration.Configuration;
import org.flywaydb.core.api.MigrationInfoService;

Basic Usage

import org.flywaydb.core.Flyway;

// Configure and execute migrations
Flyway flyway = Flyway.configure()
    .dataSource("jdbc:h2:mem:testdb", "sa", "")
    .locations("classpath:db/migration")
    .load();

// Execute migrations
flyway.migrate();

// Get migration information
flyway.info().all();

For existing applications:

import org.flywaydb.core.Flyway;
import javax.sql.DataSource;

// Use existing DataSource
DataSource dataSource = getDataSource();
Flyway flyway = Flyway.configure()
    .dataSource(dataSource)
    .schemas("myschema")
    .baselineOnMigrate(true)
    .load();

flyway.migrate();

Architecture

Flyway is built around several key components:

  • Core Migration Engine: Central Flyway class that orchestrates all database operations
  • Fluent Configuration: Type-safe configuration builder with extensive customization options
  • Migration Resolution: Automatic discovery and ordering of SQL files and Java migrations
  • Schema History: Tracking table that maintains applied migrations and their metadata
  • Callback System: Extensible lifecycle hooks for custom logic at every migration phase
  • Database Abstraction: Support for 50+ database types through pluggable database implementations

Capabilities

Core Migration Operations

Primary database migration operations for schema evolution, validation, and maintenance.

public class Flyway {
    public static FluentConfiguration configure();
    public static FluentConfiguration configure(ClassLoader classLoader);
    
    public MigrateResult migrate() throws FlywayException;
    public void validate() throws FlywayException;
    public ValidateResult validateWithResult() throws FlywayException;
    public CleanResult clean();
    public BaselineResult baseline() throws FlywayException;
    public RepairResult repair() throws FlywayException;
    public MigrationInfoService info();
    public OperationResult undo() throws FlywayException;
    
    public Configuration getConfiguration();
    public <T extends ConfigurationExtension> T getConfigurationExtension(Class<T> configClass);
}

Core Operations

Configuration Management

Comprehensive configuration system for customizing migration behavior across all aspects of database operations.

public class FluentConfiguration {
    public FluentConfiguration dataSource(String url, String user, String password);
    public FluentConfiguration dataSource(DataSource dataSource);
    public FluentConfiguration locations(String... locations);
    public FluentConfiguration schemas(String... schemas);
    public FluentConfiguration baselineVersion(MigrationVersion baselineVersion);
    public FluentConfiguration baselineOnMigrate(boolean baselineOnMigrate);
    public FluentConfiguration target(MigrationVersion target);
    public FluentConfiguration target(String target);
    public FluentConfiguration validateOnMigrate(boolean validateOnMigrate);
    public FluentConfiguration cleanDisabled(boolean cleanDisabled);
    public FluentConfiguration outOfOrder(boolean outOfOrder);
    public Flyway load();
}

public interface Configuration {
    public DataSource getDataSource();
    public Location[] getLocations();
    public String[] getSchemas();
    public MigrationVersion getBaselineVersion();
}

Configuration

Java Migration Development

Framework for creating programmatic migrations with full access to database connections and configuration.

public interface JavaMigration {
    public MigrationVersion getVersion();
    public String getDescription();
    public void migrate(Context context) throws Exception;
}

public abstract class BaseJavaMigration implements JavaMigration {
    public final MigrationVersion getVersion();
    public Integer getChecksum();
    public boolean canExecuteInTransaction();
}

public interface Context {
    public Configuration getConfiguration();
    public Connection getConnection();
}

Java Migrations

Callback System

Extensible lifecycle hooks enabling custom logic execution at any point during migration operations.

public interface Callback {
    boolean supports(Event event, Context context);
    void handle(Event event, Context context);
}

public abstract class BaseCallback implements Callback {
    public boolean supports(Event event, Context context);
}

public enum Event {
    BEFORE_MIGRATE, AFTER_MIGRATE, BEFORE_EACH_MIGRATE, AFTER_EACH_MIGRATE,
    BEFORE_CLEAN, AFTER_CLEAN, BEFORE_VALIDATE, AFTER_VALIDATE,
    BEFORE_BASELINE, AFTER_BASELINE, BEFORE_REPAIR, AFTER_REPAIR
}

Callbacks

Migration Information and Results

Comprehensive result objects and migration metadata providing detailed feedback on all operations.

public interface MigrationInfoService {
    MigrationInfo[] all();
    MigrationInfo current();
    MigrationInfo[] pending();
    MigrationInfo[] applied();
}

public interface MigrationInfo {
    MigrationVersion getVersion();
    String getDescription();
    MigrationState getState();
    Date getInstalledOn();
    Integer getExecutionTime();
}

Migration Information

Exception Handling

Comprehensive exception hierarchy for handling migration failures and validation errors.

public class FlywayException extends RuntimeException {
    public FlywayException(String message);
    public FlywayException(String message, Throwable cause);
}

public class FlywayValidateException extends FlywayException {
    public FlywayValidateException(ErrorDetails errorDetails, String validationError);
}

public interface ErrorDetails {
    ErrorCode getErrorCode();
    String getMessage();
}

Error Handling

Types

Core Types

public class MigrationVersion implements Comparable<MigrationVersion> {
    public static MigrationVersion fromVersion(String version);
    public static final MigrationVersion LATEST;
    public static final MigrationVersion CURRENT;
    public String getVersion();
    public int compareTo(MigrationVersion other);
}

public class Location {
    public Location(String descriptor);
    public String getDescriptor();
    public String getPath();
    public boolean isClassPath();
}

public enum MigrationState {
    PENDING, ABOVE_TARGET, BELOW_BASELINE, BASELINE, SUCCESS, 
    FAILED, OUT_OF_ORDER, FUTURE_SUCCESS, FUTURE_FAILED
}

Result Types

public class MigrateResult extends HtmlResult {
    public List<MigrateOutput> migrations;
    public String initialSchemaVersion;
    public String targetSchemaVersion;
    public String schemaName;
    public int migrationsExecuted;
    public boolean success;
    public String flywayVersion; 
    public String database;
    public String databaseType;
    public List<String> warnings;
    
    public long getTotalMigrationTime();
    public void addWarning(String warning);
    public List<MigrateOutput> getPendingMigrations();
    public List<MigrateOutput> getSuccessfulMigrations();
    public List<MigrateOutput> getFailedMigrations();
}

public class HtmlResult implements OperationResult {
    private String timestamp;
    private String operation;
    private String exception;
    public Exception exceptionObject;
    private boolean licenseFailed;
    
    public String getOperation();
    public String getException();
    public boolean isLicenseFailed();
}

public class CleanResult extends HtmlResult {
    public List<String> schemasCleaned;
    public List<String> schemasDropped; 
}

public class ValidateResult extends OperationResultBase {
    public final ErrorDetails errorDetails;
    public final List<ValidateOutput> invalidMigrations;
    public final boolean validationSuccessful;
    public final int validateCount;
    
    public String getAllErrorMessages();
}