我怎样才能让sbt下载scala-library.jar的源代码?

Mac*_*you 14 scala sbt

我知道如果我在定义一个依赖项时添加了withSources,sbt可以自动下载源jar文件.例如,

val specs ="org.scala-tools.testing"%"specs_2.8.1"%"1.6.6"%"test"withSources()

但是对于scala-library.jar和scala-compiler.jar,我不需要明确定义它们,我怎样才能让sbt为我下载它们的源代码?因此,在使用sbt-idea-plugin生成构思项目后,我不需要手动配置它.

Hei*_*ger 11

您必须更改引导属性.在近代的博客一个很好的说明decodified马蒂亚斯:
" 如何使SBT下载Scala库源 "(从开始@hseeberger关键起点)


这是相关部分(如果链接变得陈旧)

首先,忘记尝试在SBT项目定义中找到一些"隐藏"设置,以启用Scala库源代码下载!它不存在(至少在SBT版本0.7.x中不存在).
相反,为了将SBT提交到提交中,您需要做以下两件事:

  1. 为SBT启动器创建备用配置文件.
  2. 让SBT发射器使用它.

以下是详细步骤:

  • 找到你的sbt-launcher-0.7.x.jar文件.
    因为我在OS/X上并通过Homebrew使用SBT /usr/local/Cellar/sbt/0.7.5.RC0/libexec/sbt-launch-0.7.5.RC0.jar.
  • sbt.boot.propertiessbt启动器jar中的子目录中提取
  • 启动您最喜欢的编辑器并将第3行更改为分类器:( sources取消注释该行)
  • 找到您在SBT设置期间创建的sbt脚本文件(例如~/bin/sbt,或者,当使用Homebrew时/usr/local/Cellar/sbt/0.7.x/bin/sbt)
  • 将路径添加到调整后的sbt.boot.properties文件中,前面带有' @'字符和双引号,作为java调用的倒数第二个参数.

这是我的sbt脚本文件的样子:

#!/bin/sh
java -Xmx768M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m \
     -jar /usr/local/Cellar/sbt/0.7.5.RC0/libexec/sbt-launch-0.7.5.RC0.jar \
     "@/usr/local/Cellar/sbt/0.7.5.RC0/libexec/sbt.boot.properties" \
     "$@"
Run Code Online (Sandbox Code Playgroud)

完成这些步骤后,SBT应该很乐意scala-...-sources.jar为您创建的任何新项目下载Scala编译器和标准库的文件.
要让SBT为现有项目执行此操作,您必须project/boot/scala-{version}在执行' sbt update' 之前手动删除目录(如果主jar已存在,SBT不会获取其他源工件).

一旦有了自定义sbt.boot.properties文件,还有其他方法可以将它提供给SBT启动器.

请参阅问题" 如何让sbt使用本地maven代理存储库(Nexus)? "