我只是设法使用基于Scala的自定义构建脚本来设置SBT项目,但我收到以下错误消息:
[error] No projects defined in build unit /home/user/scala/myProject
myProject目录如下所示:
├── project
│ ├── myProjectBuild.scala
│ └── target
├── src
│ └── main
└── target
├── resolution-cache
├── scala-2.9.2
└── streams
这里是myProjectBuild.scala的内容:
import sbt._
import sbt.Keys._
object myProjectBuild extends Build {
val myProjectDependencies = List(
"org.scalatest" % "scalatest_2.11" % "2.2.1" % "test"
)
val myProjectSettings = List(
name := "myProject",
version := "1.0",
scalaVersion := "2.11.5",
libraryDependencies := myProjectDependencies
)
override lazy val settings = super.settings ++ myProjectSettings
}
有什么想法吗?
答案 0 :(得分:1)
Bare Build Definition,Multi-Project .sbt definition和Scala Build Definition之间存在差异。关于第一个:
与多项目.sbt构建定义和.scala构建定义不同 明确定义项目定义,裸构建定义 隐式地根据.sbt文件的位置定义一个。
而不是定义Projects,裸.sbt构建定义包含一个 设置[_]表达式列表。
目前的建议是使用多项目.sbt构建定义。
因此,它允许您不明确指定任何项目,但它已经过时并且不建议使用。
P.S。我想你正在阅读一些过时的“学习Scala”修订版(而不是this),或者作者使用.sbt
- 基于构建的示例。
答案 1 :(得分:0)
我找到了解决问题的方法。我在scala构建文件中添加了以下行:
lazy val root = Project(id = "HardyHeron",
base = file("."),
settings = Project.defaultSettings ++ hardyHeronSettings)
之后它几乎可以工作,但由于行
我得到了一个MissingRequirementErrorlibraryDependencies := myProjectDependencies
将其更改为
libraryDependencies ++= myProjectDependencies
如here所述,它编译正确。我不是为什么它现在正在工作。我所指的那本书(Learning Scala)提供了一个scala构建文件而没有定义rool val。那么它应该没有这条线吗?