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

我设置了使用sbt-launch.jar的bash文件,它可以工作,但是

$ sbt version


仅显示“项目版本”(0.1),并且

$ sbt --version


不执行任何操作。

#1 楼

$ 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版本。


评论


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

–马特R
2012年10月9日9:56

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

–樱桃
2015年6月23日7:22



相信SBT始终选择最非标准的方式:)

–最好的
2015年12月12日15:12

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

–user2241239
17年11月30日在23:07

遵循良好的旧sbt传统,在文档中比较晦涩难懂。

– Matanster
18年4月10日在13:06

#2 楼

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

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


评论


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

–sschuberth
17年9月4日在19:09

#3 楼

sbt about然后输入以获得SBT版本



#4 楼

在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项目外部执行的同一任务显示了可执行文件本身的当前版本。 about命令似乎更合适,因为它显示了sbt版本以及Scala的和可用的插件。其文档:

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


对于sbtVersion设置,inspect命令可以提供帮助。

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


version人们似乎希望检查以了解SBT版本的设置是设置当前模块的版本/修订版。

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.


在SBT项目中使用时,任务/设置可能显示不同的输出。

评论


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

–马克·哈拉(Mark Harrah)
2013年12月2日21:59

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

–アレックス
13年12月29日在13:27

stackoverflow.com/questions/20825539/…

–アレックス
13年12月29日在13:41

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

–马克斯·墨菲(Max Murphy)
18年3月18日在10:20

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

–杰西克·拉斯考斯基(Jacek Laskowski)
18 Mar 18 '18 at 12:53

#5 楼

您可以使用sbt about

Example: 
    C:\Users\smala>sbt about
    [info] Set current project to smala (in build file:/C:/Users/smala/)
    [info] This is sbt 0.13.6
    [info] The current project is {file:/C:/Users/smala/}smala 0.1-SNAPSHOT
    [info] The current project is built against Scala 2.10.4
    [info] Available Plugins: sbt.plugins.IvyPlugin, sbt.plugins.JvmPlugin,   sbt.plugins.CorePlugin, sbt.plugins.JUnitXmlReportPlugin
    [info] sbt, sbt plugins, and build definitions are using Scala 2.10.4"


评论


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

–TheGeeko61
18年3月31日下午4:35

#6 楼

在sbt外壳内

sbt:venkat> about
[info] This is sbt 1.3.3
...


#7 楼

运行sbt控制台,然后键入sbtVersion检查sbt版本,并键入scalaVersion以获得scala版本

#8 楼

进行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 about或sbt sbtVersion

– viru
18-10-18在20:04



已经有其他答案,我只想包含新信息,而不要重复其他答案@viru

–拉梅什·马哈然(Ramesh Maharjan)
18-10-22在0:21