Wir haben zwei Datenbanken, für die wir ihre Migrationen mit dem groway Plugin von Flyway verwalten möchten.Verwalten Sie mehrere Datenbanken mit dem Migrations-Plugin von Flyway migrations
Ich möchte eine einzelne Aufgabe haben, die beide Datenbanken migrieren kann. Allerdings kann ich die Aufgabe "flywayMigrate" nicht zweimal von einer einzelnen Task abrufen.
Hier ist, was ich habe ...
task migrateFoo() {
doFirst {
flyway {
url = 'jdbc:mysql://localhost/foo'
user = 'root'
password = 'password'
locations = ['filesystem:dev/src/db/foo']
sqlMigrationPrefix = ""
initOnMigrate = true
outOfOrder = true
}
}
doLast {
tasks.flywayMigrate.execute()
}
}
task migrateBar() {
doFirst {
flyway {
url = 'jdbc:mysql://localhost/bar'
user = 'root'
password = 'password'
locations = ['filesystem:dev/src/db/bar']
sqlMigrationPrefix = ""
initOnMigrate = true
outOfOrder = true
}
}
doLast {
tasks.flywayMigrate.execute()
}
}
task migrate(dependsOn: ['migrateFoo','migrateBar']) {}
Explizit entweder migrateFoo oder migrateBar von der Kommandozeile funktioniert gut, aber anrufen, wenn ich versuche, die Migrate Aufgabe rufen nur Datenbank foo aktualisiert wird.
Die DoFirst- und DoLast-Tasks der migrateBar-Task werden zwar aufgerufen, die Task tasks.flywayMigrate.execute() wird jedoch nicht zum zweiten Mal von migrateBar aufgerufen.
Wie kann ich über Flyway foo und bar von einer einzigen Aufgabe migrieren?
Haben Sie einen guten Zeiger haben in der Dokumentation, wie dies zu implementieren? –
Grundsätzlich müssen die Aufgabenklasse (n) alle Eigenschaften (oder mehr) der Erweiterung deklarieren, wobei die Erweiterungseigenschaften als Standardwerte verwendet werden. Sehen Sie sich die Code-Qualität-Plugins in der Gradle-Codebase an (z. B. "CheckstylePlugin" oder "FindbugsPlugin"). Per Konvention haben konkrete Aufgabenklassen in ihrem Namen keine "Aufgabe". –
OK, danke, ich werde mich darum kümmern. BTW, Jeremy benutzt dieses Plugin hier: https://github.com/flyway/flyway/tree/master/flyway-gradle-plugin –