我正在处理一个包含大量子项目的庞大项目,其中一些项目有自己的子项目。最重要的是,我希望其中一些是动态的 - 在项目构建的某个地方给出一个List
,我想为每个元素创建一个项目。
出于这些原因,必须为lazy val
中的每个项目定义build.sbt
非常麻烦。有没有其他方式来声明项目,比如addProject
- 我们可以在任何地方调用的方法?是否有一些SBT插件可以帮助解决这个问题?
答案 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)
...