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


107

私はScalaを学び始め、ほとんどすべてのチュートリアルでbuild.sbtプロジェクト設定を記述したファイルを見つけました。しかし、今giter8はテンプレートからプロジェクトをインストールして作成しました。そして、テンプレートの欠落したbuild.sbtファイルからプロジェクトを生成しましたがbuild.scala、同じ目的で使用されているように見えますが、より柔軟性があります。

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

回答:


95

簡単な例を挙げれば、これは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ファイルも含めることができval、S、lazy valS、及びdefSを(ただし、objectsおよびclassES)。

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

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


6
「build.sbtで十分になることはめったにありません」では、0.12以前では、タスクまたはマルチモジュールビルドを定義したい場合に.scalaファイルが必要になることは事実です。これは0.13で対処する必要があります。ここで、valおよび複数のプロジェクトを定義できます。もちろん、.scalaから始めることもできます。
マークハラ2013

1
このトピックに関するSBTドキュメント-scala-sbt.org/release/tutorial/Full-Def.html
neowulf33


13

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.