【问题标题】:Scala build script - no projects defined in build unitScala 构建脚本 - 构建单元中没有定义项目
【发布时间】:2015-02-15 13:21:40
【问题描述】:

我刚刚尝试使用基于 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
}

有什么想法吗?

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    Bare Build DefinitionMulti-Project .sbt definitionScala Build Definition 之间存在差异。关于第一个:

    与多项目 .sbt 构建定义和 .scala 构建定义不同 明确定义项目定义,裸构建定义 根据 .sbt 文件的位置隐式定义一个。

    裸 .sbt 构建定义不是定义项目,而是由一个 Setting[_] 表达式列表。

    目前的建议是使用多项目 .sbt 构建定义。

    因此,它允许您不明确指定任何项目,但它已经过时并且不太推荐使用。

    附:我想您正在阅读“Learning Scala”(而不是 this)的一些过时版本,或者作者使用基于 .sbt-build 的示例。

    【讨论】:

      【解决方案2】:

      我找到了解决问题的方法。我在 scala 构建文件中添加了以下几行:

      lazy val root = Project(id = "HardyHeron",
         base = file("."),
         settings = Project.defaultSettings ++ hardyHeronSettings)
      

      之后它几乎工作了,但由于这条线,我得到了一个 MissingRequirementError

      libraryDependencies := myProjectDependencies
      

      改成之后

      libraryDependencies ++= myProjectDependencies
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-06
        • 1970-01-01
        • 2014-03-11
        • 1970-01-01
        相关资源
        最近更新 更多