【发布时间】:2018-08-21 05:17:52
【问题描述】:
免责声明:我是 sbt 和 Scala 的新手,所以我可能会遗漏一些明显的东西。
我的目标是使用 Scala 编译器作为我主项目中的库。我最初是通过手动将 scala jar 放在项目中的 libs 目录中,然后将该目录包含在我的类路径中来实现的。请注意,当时我没有使用 sbt。现在,我想使用 sbt 并从 github 下载 scala 源,构建 scala jar,然后构建我的项目。我首先创建 2 个目录:myProject 和 myProject/project。然后我创建以下 4 个文件:
sbt 版本文件:
// File 1: project/build.properties
sbt.version=0.13.17
插件文件(与本题无关):
// File 2: project/plugins.sbt
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.7.0")
build.sbt 文件:
// File 3: build.sbt
lazy val root = (project in file(".")).
settings(
inThisBuild(List(
organization := "me",
scalaVersion := "2.11.12",
version := "0.1.0-SNAPSHOT"
)),
name := "a name"
).dependsOn(ScalaDep)
lazy val ScalaDep = RootProject(uri("https://github.com/scala/scala.git"))
我的源文件:
// File 4: Test.scala
import scala.tools.nsc.MainClass
object Test extends App {
println("Hello World !")
}
如果我在myProject 中运行 sbt,那么 sbt 将从 github 下载 scala 源代码,然后尝试编译它们。问题是基本目录仍然是myProject。这意味着如果 scala sbt 源文件引用了 scala 基本目录中的内容,他们将找不到它。例如,scala/project/VersionUtil.scala 文件试图打开位于 scala 基目录中的scala/versions.properties 文件。
问题:如何设置 sbt 以下载 github 存储库,然后使用该项目的基本目录而不是我的(我的意思是 myProject 的基本目录在上面的例子)??
希望这是有道理的。
我非常感谢您对此的任何反馈。
提前致谢!
【问题讨论】: