■ はじめに
sbt で 開発用(Local)と本番用(AWS)で切り替えたい場合に 色々と調べていたんだけど、やっとそれっぽい切り替えが可能になったので メモしておく。 なお、参考にしたのは、以下のサイトを組み合わせている
https://stackoverflow.com/questions/30337672/conditional-libraries-in-build-sbt
https://discuss.lightbend.com/t/conditional-sbt-dependencies/391/2
目次
【1】設定の切替 1)サンプル 2)別解 【2】補足:依存性ライブラリ の切替
【1】設定の切替
1)サンプル
val projectName = "my.proj" val organization = "my.org" scalaVersion := "2.12.15" val echoTask = taskKey[Unit]("For logging...") val isAws = System.getProperty("isAws", "false") val awsDependencies: Seq[sbt.ModuleID] = if (isAws.equals("true")) Seq( "software.amazon.awssdk" % "s3" % "2.20.30", "software.amazon.awssdk" % "kms" % "2.20.30", "software.amazon.awssdk" % "ses" % "2.20.30" ) else Seq.empty lazy val root = (project in file(".")). settings( name := "project-name", version := "1.0", libraryDependencies ++= Seq ( "org.scalatest" %% "scalatest" % "3.0.8" % "test" ) ++ awsDependencies, echoTask := { println() println("*********************") if (isAws.equals("true")) println(s"For AWS") else println(s"For Local") println("*********************") println() } )
コマンド例
$ sbt "-DisAws=true compile echoTask" ********************* For AWS *********************
2)別解
val isAws = System.getProperty("isAws", "false").contains("true") val scope = if (isAws) Provided else Compile // 略 libraryDependencies ++= Seq ( "org.scalatest" %% "scalatest" % "3.0.8" % "test" "software.amazon.awssdk" % "s3" % "2.20.30" % scope, "software.amazon.awssdk" % "kms" % "2.20.30" % scope, "software.amazon.awssdk" % "ses" % "2.20.30 % scope" // 略
【2】補足:依存性ライブラリ の切替
* 依存性ライブラリ であれば、以下がある + 1)% "test" + 2)% "provided" + 3)% "compile" => 詳細は、以下の関連記事を参照のこと
SBT ~ 基本編 / build.sbt ~
https://dk521123.hatenablog.com/entry/2023/01/27/000000
libraryDependencies ++= Seq( "software.amazon.awssdk" % "ses" % "2.20.30", "com.amazonaws" % "AWSGlueETL" % "4.0.0" % "provided", "org.scalatest" %% "scalatest" % "3.0.8" % "test" )
関連記事
Scala ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Scala ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/12/184331
SBT ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/22/000000
SBT ~ 基本編 / build.sbt ~
https://dk521123.hatenablog.com/entry/2023/01/27/000000
SBT ~ 引数設定の仕方 ~
https://dk521123.hatenablog.com/entry/2023/08/21/000000
Apache Flink ~ 引数の扱い / ParameterTool ~
https://dk521123.hatenablog.com/entry/2023/08/01/004207