在具有多个模块的scala项目中,定义在同一项目中所有build.sbt中全局可访问的值

时间:2018-08-05 03:09:19

标签: scala sbt

在一个scala项目中,该项目用作具有多个模块的共享库,其中定义了在同一项目中所有build.sbt中可以全局访问的值。

项目的build.sbt在级别0:

lazy val root = (project in file(".")).settings(commonSettings).aggregate(module1,module2,module3)

lazy val module1 = project.settings(commonSettings)
lazy val module2 = project.settings(commonSettings)
lazy val module3 = project.settings(commonSettings)

我在module1和module2中需要相同版本的spark依赖关系,但对于module3则没有spark依赖关系。所以我目前在module1和2的build.sbt中都有值sparkVersion,这感觉很多余。同样,从全局变量读取值可确保在所有模块中使用一致的版本。

val sparkVersion = "2.1.0"
"org.apache.spark" %% "spark-core" % sparkVersion,

1 个答案:

答案 0 :(得分:1)

您可以在根project/目录中创建一个 Settings.scala ,例如:

├── build.sbt
├── module1
└── project
    └── Settings.scala

Settings.scala

object Settings {
  lazy val sparkVersion = "2.1.0"
}

module1 module2 build.sbt中,您可以用作 Settings.sparkVersion