SBT多项目构建,不使用惰性val

时间:2017-03-20 11:37:40

标签: scala sbt

我正在处理一个包含大量子项目的庞大项目,其中一些项目有自己的子项目。最重要的是,我希望其中一些是动态的 - 在项目构建的某个地方给出一个List,我想为每个元素创建一个项目。

出于这些原因,必须为lazy val中的每个项目定义build.sbt非常麻烦。有没有其他方式来声明项目,比如addProject - 我们可以在任何地方调用的方法?是否有一些SBT插件可以帮助解决这个问题?

1 个答案:

答案 0 :(得分:1)

Sbt使用宏将顶级val转换为项目,因此我认为您无法逃脱该部分。但是,您可以在Project => Project函数中定义所有内容:(请注意,您还可以“免费”使用函数组合构建可组合性)

def myConf: Project => Project =
  _.enablePlugins(ScalaJSPlugin)
   .settings(scalaVersion := "2.12.0")

然后只需使用project.configure(myConf)进行单行项目定义:

lazy val subProject1 = project.configure(myConf)
lazy val subProject2 = project.configure(myConf)
lazy val subProject3 = project.configure(myConf)
lazy val subProject4 = project.configure(myConf)
...