【发布时间】:2012-01-17 15:52:54
【问题描述】:
如何检查我正在运行的 sbt 版本?
我设置了使用sbt-launch.jar 的 bash 文件,它可以工作,但是
$ sbt version
只显示“项目版本”(0.1)和
$ sbt --version
什么都不做。
【问题讨论】:
标签: sbt
如何检查我正在运行的 sbt 版本?
我设置了使用sbt-launch.jar 的 bash 文件,它可以工作,但是
$ sbt version
只显示“项目版本”(0.1)和
$ sbt --version
什么都不做。
【问题讨论】:
标签: sbt
$ sbt sbtVersion
这会打印当前项目中使用的 sbt 版本,或者如果它是每个模块的多模块项目。
$ sbt 'inspect sbtVersion'
[info] Set current project to jacek (in build file:/Users/jacek/)
[info] Setting: java.lang.String = 0.13.1
[info] Description:
[info] Provides the version of sbt. This setting should be not be modified.
[info] Provided by:
[info] */*:sbtVersion
[info] Defined at:
[info] (sbt.Defaults) Defaults.scala:68
[info] Delegates:
[info] *:sbtVersion
[info] {.}/*:sbtVersion
[info] */*:sbtVersion
[info] Related:
[info] */*:sbtVersion
您可能还想使用sbt about 那个(复制Mark Harrah's comment):
最近添加了 about 命令以尝试简洁地打印 最相关的信息,包括 sbt 版本。
【讨论】:
运行命令,“sbt sbt-version”会简单的输出你的当前目录和版本号。
$ sbt sbt-version
[info] Set current project to spark (in build file:/home/morgan/code/spark/)
[info] 0.13.8
【讨论】:
sbt sbtVersion (camelCase) 作为对 hyphen-separated names has been dropped 的支持。
在 SBT 0.13 及更高版本中,您可以使用sbtVersion 任务(@steffen 指出)或about 命令(@mark-harrah 指出)
sbtVersion 任务在 SBT 项目内外的工作方式有所不同。在 SBT 项目中,sbtVersion 显示项目及其子项目使用的 SBT 版本。
$ sbt sbtVersion
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Updating {file:/Users/jacek/.sbt/0.13/plugins/}global-plugins...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Loading project definition from /Users/jacek/oss/scalania/project
[info] Set current project to scalania (in build file:/Users/jacek/oss/scalania/)
[info] exercises/*:sbtVersion
[info] 0.13.1-RC5
[info] scalania/*:sbtVersion
[info] 0.13.1-RC5
设置在project/build.properties:
jacek:~/oss/scalania
$ cat project/build.properties
sbt.version=0.13.1-RC5
在 SBT 项目之外执行的相同任务会显示可执行文件本身的当前版本。
jacek:~
$ sbt sbtVersion
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Updating {file:/Users/jacek/.sbt/0.13/plugins/}global-plugins...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to jacek (in build file:/Users/jacek/)
[info] 0.13.0
当您在外面时,about 命令似乎更合适,因为它显示了 sbt 版本以及 Scala 和可用插件。
jacek:~
$ sbt about
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Set current project to jacek (in build file:/Users/jacek/)
[info] This is sbt 0.13.0
[info] The current project is {file:/Users/jacek/}jacek 0.1-SNAPSHOT
[info] The current project is built against Scala 2.10.2
[info] Available Plugins: com.typesafe.sbt.SbtGit, com.typesafe.sbt.SbtProguard, growl.GrowlingTests, org.sbtidea.SbtIdeaPlugin, com.timushev.sbt.updates.UpdatesPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.2
您可能需要运行“关于”以阅读其文档:
jacek:~
$ sbt 'help about'
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Set current project to jacek (in build file:/Users/jacek/)
Displays basic information about sbt and the build.
对于sbtVersion 设置,inspect 命令可以提供帮助。
$ sbt 'inspect sbtVersion'
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Set current project to jacek (in build file:/Users/jacek/)
[info] Setting: java.lang.String = 0.13.0
[info] Description:
[info] Provides the version of sbt. This setting should be not be modified.
[info] Provided by:
[info] */*:sbtVersion
[info] Defined at:
[info] (sbt.Defaults) Defaults.scala:67
[info] Delegates:
[info] *:sbtVersion
[info] {.}/*:sbtVersion
[info] */*:sbtVersion
[info] Related:
[info] */*:sbtVersion
人们似乎希望通过检查了解 SBT 版本的version 设置是设置当前模块的版本/修订版。
$ sbt 'inspect version'
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Set current project to jacek (in build file:/Users/jacek/)
[info] Setting: java.lang.String = 0.1-SNAPSHOT
[info] Description:
[info] The version/revision of the current module.
[info] Provided by:
[info] */*:version
[info] Defined at:
[info] (sbt.Defaults) Defaults.scala:102
[info] Reverse dependencies:
[info] *:projectId
[info] *:isSnapshot
[info] Delegates:
[info] *:version
[info] {.}/*:version
[info] */*:version
[info] Related:
[info] */*:version
在 SBT 项目中使用时,任务/设置可能会显示不同的输出。
【讨论】:
sbt-version 的含义。否则,我不知道命令行和提示符处的sbt-version 之间的区别。在这两种情况下,它应该是相同的sbtVersion 设置。
sbt sbtVersion在项目外运行需要9秒才能运行? Python、node 和 ruby 都只需不到一秒钟,awk、sed、minibloom 和一堆其他命令行工具也是如此。 gcc 需要一整秒,这非常慢。但是9秒拿走了樱桃。那个时候sbt在做什么?
您可以使用sbt about
【讨论】:
在 sbt shell 中
sbt:venkat> about
[info] This is sbt 1.3.3
...
【讨论】:
运行 sbt console 然后输入 sbtVersion 来检查 sbt 版本,scalaVersion 来检查 scala 版本
【讨论】:
当您从命令行运行 sbt 时会发生什么,自问题最初发布以来的 9 年中可能已经发生了一些变化。
今天,您将始终与至少两个“版本”进行交互:
/usr/local/bin/sbt)版本。[1]与sbt --script-version核实。project/build.properties)决定,其次由启动器脚本本身决定。检查 sbt --script-version(或 SBT shell 中的 sbtVersion)幸运的是,在大多数日常场景中,项目 SBT 版本是您唯一需要了解的版本。
1
它曾经只是java -jar sbt-launcher.jar,然后有/是sbt-extras/sbt(又名“反叛削减”),然后有“官方”sbt 脚本,但在一个名为的单独 github 项目中sbt-launcher-packaging(现已存档)。今天,默认脚本位于sbt/sbtGH 项目的根文件夹中,通常是您需要担心的唯一版本。
【讨论】:
执行sbt sbt-version 导致一些错误
[error] Not a valid command: sbt-version (similar: writeSbtVersion, session)
[error] Not a valid project ID: sbt-version
[error] Expected ':'
[error] Not a valid key: sbt-version (similar: sbtVersion, version, sbtBinaryVersion)
[error] sbt-version
[error] ^
正如你看到的提示similar: sbtVersion, version, sbtBinaryVersion,它们都可以工作,但正确的一个是由sbt sbtVersion生成的
【讨论】:
最新版本的 SBT 终于支持标准的--version 标志!
$ sbt --version
sbt version in this project: 1.6.2
sbt script version: 1.6.2
(用 1.6+ 测试,但似乎 it exists since at least 1.3.3)
【讨论】: