2017-01-22 13 views
0

flywaydb.orgのコマンドsbt flywayMigrateがあります。コマンドには、flywayUrl,flywayUser、およびflywayPasswordを事前に設定する必要があります。これまでのところ良いことでした。異なるsbtコマンドに基づいてSettingKeyの値を設定するにはどうすればよいですか?

今、私はsbt flywayMigrateを2つの異なる環境に使いたいと思っています。それらの変数は異なるはずです。

私は2つの新しいコマンド:sbt flywayMigrateDevsbt flywayMigrateProdを作ろうとしました。私はflywayMigrateに新しいコマンドをどのように接続するのか分かりませんでした。

新しい範囲を作成しようとしました。しかし、私は変数とタスクを適切に配線する方法を理解できませんでした。

誰かがこれを行う方法の例を私に与えることができるのだろうかと思います。私はコード例を見たいと思います。

flywayUrlに依存コマンドsbt flywayMigrateあります:

は、我々はに、問題を単純化することができます。コマンドで別のflywayUrlを使用できるようにするにはどうすればよいのですか?

ありがとうございました!

答えて

1

これにはconfigを使用してください。

.sbtファイルの内容:

// Set up your configs. 
lazy val prodConfig = config("prod") 
lazy val devConfig = config("dev") 

// Set up any configuration that's common between dev and prod. 

val commonFlyway = Seq(
    // For the sake of example, a couple of shared settings. 
    flywayUser := "pg_admin", 
    flywayLocations := Seq("filesystem:migrations") 
) 

// Set up prod and dev. 
inConfig(prodConfig)(flywayBaseSettings(prodConfig) ++ commonFlyway) 
flywayUrl.in(prodConfig) := "jdbc:etc:proddb.somecompany.com" 
// Or however you want to load your production password. 
flywayPassword.in(prodConfig) := sys.env.getOrElse("PROD_PASSWD", "(unset)") 

inConfig(devConfig)(flywayBaseSettings(prodConfig) ++ commonFlyway) 
flywayUrl.in(devConfig) := "jdbc:etc:devdb.somecompany.com" 
flywayPassword.in(devConfig) := "development_passwd" 

今、あなたは、それぞれ、生産・開発を移行するprod:flywayMigratedev:flywayMigrateを実行することができます。

他の例については、the Flyway docs pageを参照してください。

+0

私は別の同様の質問をしました:http://stackoverflow.com/questions/42738849/how-to-make-a-scope-for-dev-and-prod-for-one-command-in-sbtここでより良い解決策を提案してください。 – Tanin

+0

これはどのようにして習得しましたか?私はSBT文書を閲覧していたが、それを理解できなかった。私はあなたがそれをどのように学んだのかを知りたいです。 – Tanin

+0

古いサンプルコードはまさに自分の 'sbt'設定で持っていたものです。 Flywayプラグインの最新バージョンと一致するようにサンプルコードを更新し、関連するドキュメントへのリンクを追加しました。 – jkinkead

関連する問題