Chúng tôi có hai cơ sở dữ liệu mà chúng tôi muốn quản lý việc di chuyển của chúng bằng cách sử dụng plugin gradel của đường bay.Quản lý nhiều cơ sở dữ liệu với plugin di chuyển đường bay
Tôi muốn có một tác vụ duy nhất có thể di chuyển cả hai cơ sở dữ liệu. Tuy nhiên, tôi không thể có được nhiệm vụ flywayMigrate được gọi hai lần từ một tác vụ duy nhất.
Dưới đây là những gì tôi có ...
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']) {}
Rõ ràng gọi hoặc migrateFoo hoặc migrateBar từ dòng lệnh hoạt động tốt, tuy nhiên, nếu tôi cố gắng gọi cho nhiệm vụ chỉ chuyển cơ sở dữ liệu foo được cập nhật.
Cả tác vụ doFirst và doLast của tác vụ migrateBar đều được gọi, tuy nhiên, tác vụ tasks.flywayMigrate.execute() không được gọi lần thứ hai từ migrateBar.
Tôi làm cách nào để có được đường bay di chuyển cả foo và thanh từ một tác vụ?
Bạn có con trỏ tốt trong tài liệu về cách triển khai tính năng này không? –
Về cơ bản, các lớp nhiệm vụ cần khai báo tất cả các thuộc tính (hoặc nhiều hơn) mà phần mở rộng có, sử dụng các thuộc tính mở rộng làm mặc định. Hãy xem các plugin chất lượng mã trong cơ sở mã Gradle (ví dụ: 'CheckstylePlugin' hoặc' FindbugsPlugin'). Theo quy ước, các lớp nhiệm vụ cụ thể không có 'Task' trong tên của chúng. –
OK, cảm ơn tôi sẽ xem xét nó. BTW, Jeremy đang sử dụng Plugin này tại đây: https://github.com/flyway/flyway/tree/master/flyway-gradle-plugin –