【问题标题】:How to check sbt version?如何查看 sbt 版本?
【发布时间】:2012-01-17 15:52:54
【问题描述】:

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

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

$ sbt version

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

$ sbt --version

什么都不做。

【问题讨论】:

    标签: sbt


    【解决方案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's comment):

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

    【讨论】:

    • 可以考虑使用 --version 命令行标志吗?这是人们首先会尝试的事情。
    • 问题是“如何检查我正在运行的 sbt 版本?”答案是关于 当前项目 的打印版本。为什么接受答案?
    • 相信 SBT 总是选择最不标准的做事方式:)
    • 全世界都用'--version',sbt用'sbtVersion'。我必须在需要时(不经常)每次检查它。
    • 钝并且很好地隐藏在文档中,遵循古老的 sbt 传统。
    【解决方案2】:

    运行命令,“sbt sbt-version”会简单的输出你的当前目录和版本号。

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

    【讨论】:

    【解决方案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 项目之外执行的相同任务会显示可执行文件本身的当前版本。

      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 启动器,例如 sbt-extras,它覆盖了命令行中的 sbt-version 的含义。否则,我不知道命令行和提示符处的sbt-version 之间的区别。在这两种情况下,它应该是相同的sbtVersion 设置。
      • 有没有办法为不同的子项目设置不同的sbt版本?
      • 为什么sbt sbtVersion在项目外运行需要9秒才能运行? Python、node 和 ruby​​ 都只需不到一秒钟,awk、sed、minibloom 和一堆其他命令行工具也是如此。 gcc 需要一整秒,这非常慢。但是9秒拿走了樱桃。那个时候sbt在做什么?
      • @MaxMurphy JVM 初始化是我认为最慢的事情之一。
      【解决方案5】:

      您可以使用sbt about

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

      【讨论】:

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

      在 sbt shell 中

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

      【讨论】:

        【解决方案7】:

        运行 sbt console 然后输入 sbtVersion 来检查 sbt 版本,scalaVersion 来检查 scala 版本

        【讨论】:

          【解决方案8】:

          当您从命令行运行 sbt 时会发生什么,自问题最初发布以来的 9 年中可能已经发生了一些变化。

          今天,您将始终与至少两个“版本”进行交互:

          • 启动器脚本(例如/usr/local/bin/sbt)版本。[1]sbt --script-version核实。
          • 默认 SBT 版本(=sbt-launcher JAR 版本),主要由项目 SBT 版本(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 项目的根文件夹中,通常是您需要担心的唯一版本。

          【讨论】:

            【解决方案9】:

            执行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
            【解决方案10】:

            最新版本的 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

            【讨论】:

              猜你喜欢
              • 2011-03-21
              • 2020-10-25
              • 2011-04-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多