Scala构建脚本 - 没有在构建单元中定义的项目

时间:2015-02-15 13:21:40

标签: scala sbt

我只是设法使用基于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
}

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

Bare Build DefinitionMulti-Project .sbt definitionScala 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)

之后它几乎可以工作,但由于行

我得到了一个MissingRequirementError
libraryDependencies := myProjectDependencies

将其更改为

libraryDependencies ++= myProjectDependencies

here所述,它编译正确。我不是为什么它现在正在工作。我所指的那本书(Learning Scala)提供了一个scala构建文件而没有定义rool val。那么它应该没有这条线吗?