如何让sbt使用$ SCALA_HOME目录中的scala二进制文件?

时间:2011-04-05 22:59:24

标签: scala sbt

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

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

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

基于使用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 目标工作正常,这表明它可以用于编译和运行。

答案 1 :(得分:3)

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

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

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