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

时间:2010-12-18 09:36:16

标签: 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生成构思项目之后,我不需要手动配置它。

3 个答案:

答案 0 :(得分:11)

您必须更改引导属性。最近的博客中有一个很好的描述 decodified 来自Mathias
How to make SBT download scala library sources”(从@hseeberger关键起点开始)


以下是相关部分(如果链接过时)

  

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

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

    以下是详细步骤:

         
        
    • 找到您的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
    •   
    • 从启动器jar中的sbt.boot.properties子目录中提取sbt
    •   
    • 启动您喜爱的编辑器并将第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" \
     "$@"
  

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

获得自定义sbt.boot.properties文件后,还有其他方法可以将其提供给SBT启动器。

请参阅问题“how do I get sbt to use a local maven proxy repository (Nexus)?

答案 1 :(得分:0)

基于迈克尔斯林的评论:

如果您使用的是sbt 0.11.x及更高版本,请使用以下命令:

sbt update-sbt-classifiers

答案 2 :(得分:0)

两条信息。

(1)SBT文件 http://www.scala-sbt.org/0.13.5/docs/Detailed-Topics/Library-Management.html

我引述: "要传递地获取所有依赖项的特定分类,请运行updateClassifiers任务。默认情况下,这会使用sources或javadoc分类器解析所有工件。"

这意味着您不需要做任何事情,但是您可以将其显式化并放入build.sbt: transitiveClassifiers:= Seq(" sources"," javadoc")

要实际获取SBT下载的资源,请执行以下操作:

  

" updateClassifiers"

(2)如果你正在使用Eclipse scala IDE - 很可能你是因为Eclipse / Netebeans的插件的开发对于eclipse来说更加活跃 - 那么你应该配置你的ecplise以找出你的来源,如果你这样做以下。 EclipseKeys.withSource:= true 这是您应该阅读的文档, https://github.com/typesafehub/sbteclipse/wiki/Using-sbteclipse