我知道如果我在定义一个依赖项时添加了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生成构思项目之后,我不需要手动配置它。
答案 0 :(得分:11)
您必须更改引导属性。最近的博客中有一个很好的描述 decodified 来自Mathias:
“How to make SBT download scala library sources”(从@hseeberger关键起点开始)
以下是相关部分(如果链接过时)
首先,忘记尝试在SBT项目定义中找到一些“隐藏”设置,以启用Scala库源代码下载!它不存在(至少在SBT 0.7.x版本中不存在) 相反,为了将SBT提交到提交中,您需要做以下两件事:
- 为您的SBT启动器创建备用配置文件。
- 让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
。- 从启动器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