【问题标题】:How do I make sbt use the scala binaries from $SCALA_HOME directory?如何让 sbt 使用 $SCALA_HOME 目录中的 scala 二进制文件?
【发布时间】:2011-07-30 09:29:29
【问题描述】:

sbt 在这个位置为每个 sbt 项目下载新版本的 scala 编译器和 scala 库: ./project/boot/scala-2.8.1/lib/scala-library.jar
./project/boot/scala-2.8.1/lib/scala-compiler.jar

如何让它从 $SCALA_HOME 指向的位置拾取编译器和库?

另外,我很惊讶这不是一个常见的要求。 Scala 开发人员是否更愿意为每个项目使用单独的编译器和库副本?

我发现了同样的请求,但没有得到答复: http://groups.google.com/group/simple-build-tool/browse_thread/thread/9e2c7bc34253ad0f?pli=1

提前感谢您的帮助。

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    免责声明,我自己不使用它,但我很好奇这是否可能。

    基于使用local scala instance,我定义了以下项目:

    import sbt._
    import java.io.File
    
    class Test(info: ProjectInfo) extends DefaultProject(info) {
      override def localScala = 
        defineScala("2.8.1-local", new File(System.getenv("SCALA_HOME"))) :: Nil
    }
    

    然后在project/build/build.properties:

    build.scala.versions=2.8.1-local
    

    然后我可以看到 console 目标工作正常,这表明它也可以用于编译和运行。

    【讨论】:

    • 我到家后会试试这个解决方案。非常感谢!
    • 如何在build.sbt 文件中引用系统环境变量?
    • @ruslan,sbt 不断发展,我不知道这个答案是否仍然适用于更新版本的 sbt 和 scala。
    • @ruslan,其实我觉得sbt不再下载同一个编译器的多个副本了……
    【解决方案2】:

    虽然我理解这种担忧,但我认为使用单独的副本是一件好事

    • 您可以安装多个 scala 版本,并使用多个项目 不同的scala版本。这并不少见(我目前有项目 使用 2.8.0,其他使用 2.8.1,其他使用 2.9.0.RC1 ...) - 因此: 每次切换到另一个项目时,您会编辑 $SCALA_HOME 吗?不可行
    • sbt 将它们舒适地存储在本地 ivy2 缓存中,因此获取版本是 非常快
    • 如果你克隆其他人的项目,你可以只做 sbt update 和 wooop scala 是 在那里,无论您是否已经拥有该特定版本
    • project/boot 通常不会检入任何存储库,因此您的项目文件夹 仅在本地硬盘上更大。考虑到你有多少东西 开发人员计算机,我会说每个库和编译器的额外大小 项目很简单,标准硬盘只有几百 GB

    您是否尝试在 sbt googlegroup 上再次提问?

    【讨论】:

    • 感谢您指出 ivy2 缓存。考虑到 Scala 不断发展,这是有道理的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2011-09-15
    • 2021-10-01
    • 2017-12-16
    • 1970-01-01
    • 2015-02-21
    • 2015-06-13
    相关资源
    最近更新 更多