Scala 如何在此build.sbt中声明和使用对象?

Scala 如何在此build.sbt中声明和使用对象?,scala,sbt,Scala,Sbt,我试图理解如何编写一个编写良好的build.sbt文件,并在youtube上学习了一个教程。在该教程中,创建了一个对象,如下所示,但我所写的给出了显示的错误 我做错了什么 我已尝试在不做任何更改的情况下删除导入和对象声明之间的空行 import sbt._ import sbt.Keys._ object BuildScript extends Build { lazy val commonSettings = Seq( organization := "me", version

我试图理解如何编写一个编写良好的build.sbt文件,并在youtube上学习了一个教程。在该教程中,创建了一个对象,如下所示,但我所写的给出了显示的错误

我做错了什么

我已尝试在不做任何更改的情况下删除导入和对象声明之间的空行

import sbt._
import sbt.Keys._

object BuildScript extends Build {
  lazy val commonSettings = Seq(
  organization := "me",
  version := "0.1.0",
  scalaVersion := "2.11.4"
 )
 lazy val root = (project in file(".")).
  settings(commonSettings: _*).
  settings(
    name := "deepLearning",
    libraryDependencies += "org.deeplearning4j" % "deeplearning4j-core" % "0.4-rc3.4"
  )}

error message:
error: illegal start of simple expression
object BuildScript extends Build {
^
[error] Error parsing expression.  Ensure that there are no blank lines    within a setting.
我认为这条线索实际上解释了这一点:


我觉得克里斯·马丁对这篇文章的编辑是不必要的,但不能拒绝

有两种方法可以解决此问题:

  • 执行
    对象构建脚本扩展构建{…}
    并对构建文件使用
    .scala
    扩展名。我认为这种方式是推荐的长期Sbt构建文件样式
  • 将构建定义更改为gregsymons的答案,并保留
    .sbt
    扩展名

  • 我想你的教程已经过时了。使用最新版本的sbt(0.13+左右),您确实希望执行以下操作:

    lazy val commonSettings=Seq(
    组织机构:=“我”,
    版本:=“0.1.0”,
    规模规避:=“2.11.4”
    )
    lazy val root=(文件中的项目(“.”)。
    设置(公共设置)。
    背景(
    名称:=“深度学习”,
    libraryDependencies+=“org.deeplearning4j”%“deeplearning4j核心”%“0.4-rc3.4”
    )
    
    但是,如果您的项目没有任何子项目,
    commonSettings
    val
    有些多余,您可以直接内联它:

    lazy val root=(文件中的项目(“.”)。
    背景(
    组织机构:=“我”,
    名称:=“深度学习”,
    版本:=“0.1.0”,
    scalaVersion:=“2.11.4”,
    libraryDependencies+=“org.deeplearning4j”%“deeplearning4j核心”%“0.4-rc3.4”
    )
    

    如果您确实有子项目,并且最后有很多常用设置,您可能希望将它们拉到自动推送中,但这是一个更高级的概念。

    我是sbt的维护人员,我支持这条消息。@eugene。到目前为止,sbt似乎是一个了不起的工具。我相信,对于scala构建工具,完全有可能在项目根目录下创建一个(build).sbt。我认为另一个堆栈溢出线程解释得很好。