private void printInfo(MigrationInfo[] migrationInfo) {
        List<Line> lines = new ArrayList<>();
        Arrays.asList(migrationInfo).forEach(info -> {
            lines.add(new Line(
                    info.getVersion().getVersion(),
                    info.getDescription(),
                    info.getType().name(),
                    info.getInstalledOn() != null
                            ? info.getInstalledOn().toString().substring(0, 19)
                            : "",
                    info.getState().getDisplayName()));
        });

        final String lineFormat = "%-9s %-35s %-5s %-20s %-8s";
        final String br = "--------------------------------------------------------------------------------";
        System.out.println(br);
        System.out.printf(lineFormat, "Version", "Description", "Type", "Installed On", "State");
        System.out.println();
        System.out.println(br);
        for (Line line : lines) {
            System.out.format(
                    lineFormat,
                    line.version, line.description, line.type, line.installedOn, line.state);
            System.out.println();
        }
        System.out.println(br);
    }
This stand-alone class can be used to run Flyway migrations when run from a fat jar. E.g.
java -cp stroom-app-all.jar stroom.db.migration.FlywayHelper info
--url=jdbc:mysql... --username=root --password=my-secret-pw
<p>
It currently only supports 'info' and 'migrate'.
<p>
This class doesn't use any existing Flyway configuration because we might want to use it against other
databases, e.g. for testing migrations.
<p>
This class lives in Stroom because this gives it the benefit of having access to all the migrations
and to dependencies such as Saxon -- these are already on the classpath.
stroom-app/src/main/java/stroom/app/db/migration/FlywayHelper.java