如何查看SBT版本?


335

如何查看我正在运行的sbt版本?

我已经设置了使用的bash文件sbt-launch.jar,并且可以运行,但是

$ sbt version

仅显示“项目版本”(0.1)和

$ sbt --version

什么也没做。

Answers:


456
$ 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的评论):

最近添加了about命令,以尝试简洁地打印最相关的信息,包括sbt版本。


150
是否可以考虑--version命令行标志?人们会首先尝试的。
Matt R

9
问题是“如何检查我正在运行的sbt版本?” 答案是关于准备当前项目的版本。为什么接受答案?
2015年

47
相信SBT始终选择最非标准的处事方式:)
samthebest 2015年

15
全世界使用“ --version”,sbt使用“ sbtVersion”。我必须在需要时每次检查一次(不经常)。
Osskar Werrewka '17

5
遵循旧的sbt良好传统,使文档变得晦涩难懂。
matanster '18

30

运行命令“ sbt sbt-version”将仅输出当前目录和版本号。

$ sbt sbt-version
[info] Set current project to spark (in build file:/home/morgan/code/spark/)
[info] 0.13.8

10
从sbt 1.0开始,您甚至必须使用sbt sbtVersion(camelCase),因为对连字符分隔名称的支持已删除
sschuberth


14

在SBT 0.13及更高版本中,您可以使用sbtVersion任务(由@steffen指出)或about命令(由@ mark-指出)

sbtVersionSBT项目内部和外部执行任务的方式有所不同。在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

version人们似乎期望检查知道SBT版本设置来设置当前模块的版本/修订

$ 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项目中使用时,任务/设置可能显示不同的输出。


1
也许您使用的是自定义sbt启动器,例如sbt-extras,它会覆盖sbt-version命令行的含义。否则,我不知道sbt-version命令行和提示符之间的区别。sbtVersion在两种情况下,它应该是相同的设置。
Mark Harrah

有什么办法可以为不同的子项目设置不同的sbt版本?
アレックス


为什么sbt sbtVersion在项目外运行需要9秒钟才能运行?Python,node和ruby都需要不到一秒钟的时间,awk,sed,minibloom和许多其他命令行工具也是如此。gcc需要一整秒,非常慢。但是9秒花了樱桃。那个时候sbt在做什么?
Max Murphy '18

@MaxMurphy JVM初始化是我认为最慢的事情。
Jacek Laskowski

9

您可以使用 sbt about

例: 
    C:\ Users \ smala> sbt关于
    [信息]将当前项目设置为smala(在构建文件中:/ C:/ Users / smala /)
    [info]这是sbt 0.13.6
    [信息]当前项目为{文件:/ C:/ Users / smala /} smala 0.1-SNAPSHOT
    [info]当前项目是针对Scala 2.10.4构建的
    [info]可用插件:sbt.plugins.IvyPlugin,sbt.plugins.JvmPlugin,sbt.plugins.CorePlugin,sbt.plugins.JUnitXmlReportPlugin
    [info] sbt,sbt插件和构建定义正在使用Scala 2.10.4”

1
对于寻求该问题答案的其他人,这就是答案。无法理解为什么上面的错误答案被接受了……通过深入讨论,可以找到这个答案……但是……
TheGeeko61 '18



0

这样做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约或SBT sbtVersion
维鲁

已经有其他答案了,我只想包括新信息而不重复其他答案@viru
Ramesh Maharjan 18-10-22

0

您可以使用以下命令检查SBT版本

sbt sbtVersion
sbt about
sbt 'inspect version'
sbt version
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.