web-dev-qa-db-ja.com

build.sbtとbuild.scalaの違いは何ですか?

Scala=)を学び始め、ほぼすべてのチュートリアルでプロジェクト設定を説明するbuild.sbtファイルが表示されますが、giter8をインストールし、テンプレートからプロジェクトを作成しました。また、テンプレートから生成されたプロジェクトはbuild.sbtファイルを逃しましたが、build.scala(同じ目的で使用されているようですが、より柔軟です)を持っています。

build.sbtbuild.scalaの違いは何ですか?
どちらがより好まれ、なぜですか?

107
MyTitle

簡単な例を挙げると、このbuild.sbt

name := "hello"

version := "1.0"

project/Build.scalaとほぼ同等の略記法です:

import sbt._
import Keys._

object Build extends Build {
  lazy val root = Project(id = "root", base = file(".")).settings(
    name := "hello",
    version := "1.0"      
  )
}

.sbtファイルには、vals、lazy vals、およびdefsを含めることもできます(ただし、objectsおよびclassesは除く)。

「。scalaビルド定義」と呼ばれるSBTドキュメント 、特に「build.sbtをBuild.scalaに関連付ける」セクションを参照してください。

Scalaの完全な表現力が必要な場所で複雑なことをしている場合は、.scalaビルド定義を検討してください。

95
Chris Martin

2016年7月更新(3年後)

Build.scalaは、 sbt 0.13.12 で非推奨になりました。

Build特性は非推奨となり、.sbt フォーマット

PR 25 は非推奨を実装します。
" 付録:.scalaビルド定義 "が更新されました。

30
VonC

いつ .sbtsはコンパイルされていますが、.scalaファイルはprojectディレクトリ内にあります。再帰的なタスクでは使用できません。つまり、たとえばsbtからsbtをカスタマイズすることはできません。詳細については、sbtドキュメントの関連セクションを読むことを検討してください。 http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition

13
tkroman