What is the difference between build.sbt and build.scala?

前端 未结 3 1572
[愿得一人]
[愿得一人] 2020-12-12 13:17

I started to learn Scala and almost in every tutorial I see a build.sbt file which describes project settings. But now I have installed giter8 and

相关标签:
3条回答
  • 2020-12-12 13:53

    To give a brief example, this build.sbt:

    name := "hello"
    
    version := "1.0"
    

    is a shorthand notation roughly equivalent to this 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"      
      )
    }
    

    The .sbt file can also include vals, lazy vals, and defs (but not objects and classes).

    See the SBT document called ".scala build definition", particularly the section "Relating build.sbt to Build.scala".

    Consider a .scala build definition if you're doing something complicated where you want the full expressiveness of Scala.

    0 讨论(0)
  • 2020-12-12 13:58

    When .sbts are being compiled, they are before that sort of merged with the .scala files inside project directory. They can't be used in recursive tasks, that is, you can't customize sbt from sbt, for example. For more detailed information, consider reading related section is sbt documentation: http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition

    0 讨论(0)
  • 2020-12-12 14:03

    Update July 2016 (3 years later)

    Build.scala is officially deprecated in sbt 0.13.12

    The Build trait is deprecated in favor of the .sbt format

    PR 2530 implements that deprecation.
    "Appendix: .scala build definition" has been updated.

    0 讨论(0)
提交回复
热议问题