SBT目录结构.什么是"项目"?

Spa*_*key 14 scala sbt playframework-2.0

一个play项目有一个像这样的"project"文件夹:

  • 项目
    • 目标
    • 项目
      • 目标

我一直认为这只是我不应该想太多的生活奥秘之一,但今天我的好奇心得到了我的好处.

谷歌搜索给了我这个提到顶级"项目"文件夹用于sbt配置.我想知道为什么他们没有把那个".sbt"称为".git",为什么在该文件夹之外仍然有一个文件"build.sbt",但我认为让事情真正有意义没有乐趣.

它也没有提到为什么它里面包含另一个"project"文件夹.

为什么有嵌套的"项目"文件夹?

Ale*_*nov 8

http://www.scala-sbt.org/0.13/tutorial/Organizing-Build.html:

build.sbt隐藏了sbt是如何工作的.sbt构建使用Scala代码定义.必须构建该代码本身.有什么比与sbt更好的方式?

项目目录是构建中的另一个构建,它知道如何构建构建.为了区分构建,我们有时使用正确构建术语来指代您的构建,并使用元构建来引用项目中的构建.metabuild中的项目可以执行任何其他项目可以执行的任何操作.您的构建定义是一个sbt项目.

海龟一路走下去.如果您愿意,可以通过创建项目/项目/目录来调整构建定义项目的构建定义.

  • FTR,我们在https://github.com/scala-js/scala-js中有一个元元构建,它包含一个源生成器,为构建项目*生成源*,即用于元构建.所以*是*,你可以! (2认同)

ayv*_*ngo 5

SBT是递归的。它使用 scala 代码定义项目的构建属性。scala 代码应该放在哪里?到当前项目内的另一个项目。但如果项目定义本身是一个正确的项目,那么它可以使用另一个 sbt 配置进行配置。等等。Scala 开发人员喜欢递归结构。

您可以更改嵌套(元意义上)项目的 scala 编译器版本、scala 编译器选项。它可能会改变元项目的解释方式,并可能影响最上面的项目。

  • “您可以更改 scala 编译器版本” 这是您不应该更改的一件事,因为对于元构建,它必须与 SBT 本身使用的版本相同。 (2认同)