我听说.sbt文件在0.13中已经以各种方式得到了改进,现在我可以在其中指定多项目构建 .
http://www.scala-sbt.org/0.13.0/docs/Community/ChangeSummary_0.13.0.html#sbt-format-enhancements提到我们现在可以在.sbt文件中定义子项目 . 我也知道根目录中的多个.sbt文件将聚合到一个概念文件中 .
但是,我真正喜欢的是不要用十几个子项目.sbt文件污染我的根 . 有没有办法可以将子项目build.sbt文件放到各自的子目录中,在它们共享的地方保留一些公共代码,然后为整个项目聚合子项目的根build.sbt?我现在在.scala文件中有类似的设置,但如果可能的话,我更愿意使用.sbt文件 .
如果这不可能,使用.sbt文件构建大型多项目构建的“正确”方法是什么?
1 回答
在0.12中应该已经可以将
.sbt
文件放在子项目的基本目录中,并且那里的设置将包含在该项目的范围内 .通过在
project/
中创建一个普通的.scala
文件,可以在.sbt
文件之间重用代码 .project/
中的代码可用于.sbt
文件 . 一个.sbt
中的定义对其他.sbt
文件不可见,至少在0.13中 . 这主要是一个实施限制,未来版本是否会解除这个问题尚未确定 .默认根项目将聚合所有子项目,包括来自
subProject/build.sbt
中定义的项目的子项目 .目前的困难是明确表达 . 例如,根目录中的以下
build.sbt
将在sub/
中定义子项目 . 这是一个完整的定义,定义项目的ID,基目录等 .<root>/build.sbt
但是,它无法引用
<sub>/build.sbt
中定义的任何内容 . (在编译和评估<root>/build.sbt
之后才知道sub/build.sbt
的存在 . )因此,要明确定义sub
聚合的内容,您需要以下内容:sub/build.sbt
但是,这会复制
sub
的定义 .未来可能的解决方案是将根定义仅作为参考,例如:
<root>/build.sbt