默认的scalaVersion sbt在哪里使用?

时间:2013-11-24 22:01:51

标签: scala sbt

出于好奇,我想知道sbt使用的默认scalaVersion是否在源代码中以某种方式进行了硬编码?我指的是未明确指定scala版本的所有项目的版本(通过scalaVersion设置键)

我问这个是因为,在我的机器上,我在任何地方使用sbt 0.12.4并且没有build.sbt个文件(既不是项目根目录,也不是project~/.sbt/plugins),并且当我输入sbt about时,我得到了这个:

...
[info] sbt, sbt plugins, and build definitions are using Scala 2.9.2

我已经在使用scala 2.10.2(在我的PATH中),但我认为这个安装与sbt无关,因为它从官方回购中下载了scala。

有许多类似的问题like thisthis,但它们仅涉及特定项目。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

默认情况下,sbt将使用与运行sbt本身相同的Scala版本构建项目。但是〜/ .sbt / boot目录从存储库下载scala jar,类似于插件jar - 因此默认的scala版本是存储库中配置的sbt的依赖项。意味着sbt版本向前推进,因此默认的scala版本将向前推进,由sbt devs配置。

这可以通过查看plugins / target / resolution-cache / reports / default-global-plugins-scala-tool.xml(以及runtime-resolved.xml中的相同内容)来确认:

<module organisation="org.scala-lang" name="scala-compiler">
<revision name="2.10.2" status="release" pubdate="20130607040625" resolver="sbt-chain" artresolver="sbt-chain" homepage="http://www.scala-lang.org/" downloaded="false" searched="false" default="false" conf="default, optional, compile, runtime, optional(default), master" position="0">
    <license name="BSD-like" url="http://www.scala-lang.org/downloads/license.html    "/>
    <metadata-artifact status="no" details="" size="2843" time="0" location="C:\Users\Bestos\.ivy2\cache\org.scala-lang\scala-compiler\ivy-2.10.2.xml" searched="false" origin-is-local="false" origin-location="http://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.10.2/scala-compiler-2.10.2.pom"/>
    <caller organisation="default" name="global-plugins" conf="scala-tool" rev="2.10.2" rev-constraint-default="2.10.2" rev-constraint-dynamic="2.10.2" callerrev="0.0"/>
    <artifacts>
        <artifact name="scala-compiler" type="jar" ext="jar" status="no" details="" size="14411577" time="0" location="C:\Users\Bestos\.ivy2\cache\org.scala-lang\scala-compiler\jars\scala-compiler-2.10.2.jar">
            <origin-location is-local="false" location="http://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.10.2/scala-compiler-2.10.2.jar"/>
        </artifact>
    </artifacts>
</revision>
</module>

当然,用于单个项目的scala版本可以通过设置scalaVersion以不同的方式配置为“bootstrap scala版本”。在build.sbt:

scalaVersion := "2.10.1"