我正在尝试在 ubuntu 中安装 SBT 0.13.6 版本。为此,我执行以下步骤:
wget http://dl.bintray.com/sbt/debian/sbt-0.13.6.deb
sudo dpkg -i sbt-0.13.6.deb
sudo apt-get update
sudo apt-get install sbt
安装完成后,当我查看sbt版本时,会显示版本1.0.3 。
这是命令:
hadoop@localhost:~$ sbt about
Getting org.scala-sbt sbt 1.0.3 ...
:: retrieving :: org.scala-sbt#boot-app
confs: [default]
69 artifacts copied, 0 already retrieved (22027kB/913ms)
Getting Scala 2.12.4 (for sbt)...
:: retrieving :: org.scala-sbt#boot-scala
confs: [default]
5 artifacts copied, 0 already retrieved (18986kB/225ms)
[info] Loading project definition from /home/hadoop/project
[info] Set current project to hadoop (in build file:/home/hadoop/)
[info] This is sbt 1.0.3
[info] The current project is {file:/home/hadoop/}hadoop 0.1-SNAPSHOT
[info] The current project is built against Scala 2.12.4
[info] Available Plugins: sbt.plugins.IvyPlugin, sbt.plugins.JvmPlugin, sbt.plugins.CorePlugin, sbt.plugins.JUnitXmlReportPlugin, sbt.plugins.Giter8TemplatePlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.12.4
我的 Scala 版本不是 2.12.4 ;它 2.11.8 。为什么它显示错误的版本?
hadoop@localhost:~$ scala -version
Scala code runner version 2.11.8 -- Copyright 2002-2016, LAMP/EPFL
我犯了什么错误吗?
答案 0 :(得分:11)
SBT - 无论您安装哪个版本 - 都会在运行时下载项目特定版本的 SBT 。如果未指定此类版本,则将使用已安装的版本。如果您希望某个特定项目使用 SBT 0.13.6,那么您将创建一个名为./project/build.properties
的文件(相对于项目的根目录,在此特定项目中为/home/hadoop/project/build.properties
case)具有以下内容:
sbt.version=0.13.6
然后SBT 将下载该版本,并将用它来构建您的项目。
因此,我强烈建议您始终在您的计算机上安装最新版本的 SBT ,因为这样可以简化未来的工作。
顺便说一句,我注意到您使用dpkg
来安装特定的 SBT 版本,但之后使用了apt-get install sbt
- 这可能会安装最新的 SBT < / em>发布(我猜测版本1.0.3)适用于您的 Ubuntu 版本,取代您通过dpkg
安装的版本。这些命令的输出是什么?或者,您的/home/hadoop/project/build.properties
文件 - 如果存在 -
可能是指定 SBT 版本1.0.3。
要考虑的另一件事:sbt
命令应该从项目目录执行 - 一个只包含项目源的目录。从sbt
文件夹运行HOME
不是一个好主意,因为它会留下一些输出文件夹(例如./project
,./target
等。)
编译 Scala 源时, SBT 将使用 SBT 构建文件中指定的版本(或用于构建如果未定义该属性,则使用> SBT 版本 - 它不使用您计算机上可能具有的任何已安装的 Scala 版本。
如果您想使用 Scala 2.11.8,请将以下行添加到 SBT 构建文件中:
scalaVersion := "2.11.8"
我强烈建议您查看其网站上的SBT documentation。