UpdateLogging.Full
下恢复了“解析中…”日志。 lm#240 by @hodga-Dconfig.resource=/path/to/configFile
与 Gigahorse 冲突的问题。 lm#241 by @tanishiking感谢所有通过使用、报告错误、改进文档、移植构建、移植插件以及提交和审查拉取请求来帮助改进 sbt 和 Zinc 1 的人。
sbt 1.1.6 由 15 位贡献者完成,根据 sbt、zinc、librarymanagement、util、io、launcher-package 和网站上的 git shortlog -sn --no-merges v1.1.5...v1.1.6
:Ethan Atkins、Eugene Yokota、Dale Wijnand、Aaron S. Hawley、OlegYch、Richard Summerhayes、Jannis (dadarakt)、Rikito Taniguchi (tanishiking)、Øyvind Høisæther、Daniel Westheide、Harrison Houghton、Holden Karau、Håkon Wold、Jason Zaugg 和 tekay。
~
的问题。 sbt#4098 by @eatkinsRejectedExectionExeption
堆栈跟踪。 sbt#4058 by @retronym从 sbt 1.1.4 开始,Ethan Atkins 为触发执行 ~
监视器贡献了修复和改进。sbt 1.1.5 应该修复了文件修改事件与命令执行之间的延迟。
我们发布了一个新的 sbt VS Code 扩展,它可以在嵌入式终端窗口中启动 sbt 会话。这由 Robert Walker (@WalkingOlof) 在 sbt#4130 中贡献。
我们在 sbt 文档中添加了 sbt 实例。这是一个单页指南,引导你从零开始在 Docker 上构建一个应用程序,灵感来自 William Narmontas (@ScalaWilliam) 的 Essential sbt,并很大程度上基于它。
感谢所有通过使用、报告错误、改进文档、移植构建、移植插件以及提交和审查拉取请求来帮助改进 sbt 和 Zinc 1 的人。
sbt 1.1.5 由 21 位贡献者完成,根据 sbt、zinc、librarymanagement、util、io、launcher-package 和网站上的 git shortlog -sn --no-merges v1.1.4...v1.1.5
:Eugene Yokota、Ethan Atkins、Jason Zaugg、Liu Fengyun、Antonio Cunei、Dale Wijnand、Roberto Bonvallet、Alexey Alekhin、Daniel Parks、Heikki Vesalainen、Jean-Luc Deprez、Jessica Hamilton、Kenji Yoshida (xuwei-k)、Nikita Gazarov、OlegYch、Richard Summerhayes、Robert Walker、Seth Tisue、Som Snytt、oneill 和 杨博 (Yang Bo)
console
两次会破坏 JLine 的问题。 #3482/#4054 by @eed3si9nupdateSbtClassifiers
。 #4070/#3432 by @steinybotsbt -debug
将日志级别更改为调试。 lp#226 by @eed3si9nsbt.io.JavaMilli
。 io#139 by @dwijnand-Dsbt.launcher.cp.prepend
JVM 标志,用于修补 sbt。 launcher#50 by @fommilsbt 在 macOS 上一直存在触发执行问题。Ethan Atkins 通过合并来自其 CloseWatch 的 MacOSXWatchService 来修复了这个问题。感谢,Ethan!
还要感谢 Greg Methvin 和 Takari 的 directory-watcher。 #3860/#4071/io#138 by @eatkins
在进行性能分析时,你会遇到一些棘手的问题,比如你想分析应用程序的开始部分,但需要找出进程 ID。
为此,我们添加了 sbt.launcher.standby
JVM 标志。从 sbt 1.1.4 开始,你可以运行
$ sbt -J-Dsbt.launcher.standby=20s exit
这将在执行其他操作之前倒计时 20 秒。 launcher#51 by @eed3si9n
使用火焰图(如果您还没有,请查看分析 JVM 应用程序文章),Jason Zaugg 发现构建文件的哈希代码是 sbt 启动过程中的一个热点。火焰图支持使用 Ctrl+F
过滤方法名称;当我运行它时,它显示 4.5% 的时间花在了 Eval#evalCommon
方法上。
Jason 建议,与其创建中间的 Array[Byte]
并在最后将其传递给 MessageDigest
,不如以更过程化的方式将数组传递给 MessageDigest#update
。在确认它有效之后,我们使用火焰图确定了文件时间戳代码是下一个瓶颈,因此将其切换为使用 NIO。经过这两项更改后,Eval#evalCommon
的占用率降至 2.3%。
这意味着您的构建在 sbt 1.1.4 上加载速度略快(例如,在 akka/akka 上快了大约 0.54 秒)。#4067 由 @eed3si9n 创建。
感谢所有通过使用、报告错误、改进文档、移植构建、移植插件以及提交和审查拉取请求来帮助改进 sbt 和 Zinc 1 的人。
根据 git shortlog -sn --no-merges v1.1.2...v1.1.4
在 sbt、zinc、librarymanagement、util、io、launcher-package 和网站上的记录,sbt 1.1.4 由 11 位贡献者贡献:Eugene Yokota、Dale Wijnand、杨博 (Yang Bo)、Ethan Atkins、Sam Halliday、Aaron S. Hawley、Gabriele Petronella、Jason Steenstra-Pickens、Jason Zaugg、Julien Jean Paul Sirocchi 和 aumann。
run
期间继承 Scala 编译器的依赖关系问题。 zinc#505 由 @eed3si9n 创建。new
命令遗留目标目录的问题。 #4033 由 @eed3si9n 创建。ivySettings
文件中 managedChecksums
的空处理问题。 lm#218 由 @IanGabes 创建。sbt.boot.lock
作为 JVM 属性以选择退出锁定。 #3927 由 @dwijnand 创建。SBT_GLOBAL_SERVER_DIR
环境变量作为 UNIX 上长套接字文件路径的解决方法。 #3932 由 @dwijnand 创建。getDecoder
问题。 zinc#502 由 @jilen 创建。java9-rt-ext-output
列入白名单。 lp#211 由 @eatkins 创建。-error
未抑制启动日志的问题。 #4036 由 @eed3si9n 创建。Configuration
的哈希码来修复性能问题。 lm#213 由 @retronym 创建。-33000L
。 #3991 由 @dwijnand 创建。buildinfo.BuildInfo
,该程序最初用于测试。 3967 由 @dwijnand 和 @xuwei-k 创建。根据 git shortlog -sn --no-merges v1.1.1...v1.1.2
在 sbt、zinc、librarymanagement、util、io、launcher-package 和网站上的记录,sbt 1.1.2 由 23 位贡献者贡献:Dale Wijnand、Eugene Yokota、Jason Zaugg、Kenji Yoshida (xuwei-k)、Ethan Atkins、Martijn Hoekstra、Martynas Mickevičius、Dennis Hörsch、Hosam Aly、Antonio Cunei、Friedrich von Never、Hiroshi Ito、Ian Gabes、Jilen Zhang、Mathias Bogaert、Naohisa Murakami (tiqwab)、Philippus Baalman、Ryan Bair、Seth Tisue、Ståle Undheim、Takuya Miyamoto (tmiyamon)、Yasuhiro Tatsuno。感谢大家!
sbt console
的批处理模式运行时,在 console
中进行制表符自动完成的问题。 #3841/#3876 由 @eed3si9n 创建。Extracted#append
,改用 appendWithSession
或 appendWithoutSession
。 #3865 由 @dwijnand 创建。Boolean
设置,名为 autoStartServer
。请参见以下内容。^^
的 Scala 版本。 #3923 由 @dwijnand 创建。sbt 1.1.1 添加了一个新的全局 Boolean
设置,名为 autoStartServer
,默认值为 true
。当设置为 true
时,sbt shell 将自动启动 sbt 服务器。否则,它将不会启动服务器,直到发出 startSever
命令。这可用于出于安全原因选择退出服务器。
根据 git shortlog -sn --no-merges v1.1.0 ..v1.1.0
在 sbt、zinc、librarymanagement、util、io 和网站上的记录,sbt 1.1.1 由 16 位贡献者贡献:Kenji Yoshida (xuwei-k)、Eugene Yokota、Dale Wijnand、Antonio Cunei、Steve Waldman、Arnout Engelen、Deokhwan Kim、OlegYch、Robert Walker、Jorge Vicente Cantero (jvican)、Claudio Bley、Eric Peters、Lena Brüder、Seiya Mizuno、Seth Tisue、j-keck。感谢大家!
这是 sbt 1.0.x 系列的特性版本。
version
设置默认值为 0.1.0-SNAPSHOT
,以与语义版本控制兼容。 #3577 由 @laughedelic 创建。Class.forName
在 run
中无法正常工作的 ClasspathFilter
。 zinc#473 / #3736 / #3733 / #3647 / #3608 由 @ravwojdyla 创建。NullPointerException
的问题。 zinc#465 由 @eed3si9n 创建。keysWithEvents
映射来修复 PollingWatchService
。 io#90 由 @mechkg 创建,修复了与 ~
相关的 issue #3687、#3695 和 #3775。File#lastModified()
丢失毫秒精度的精度提供解决方法。 io#92/io#106 由 @cunei 创建。IO.relativize
对相对路径不起作用的问题。 io#108 由 @dwijnand 创建。ScalaInstance.otherJars
中保留了 JAR 顺序。 zinc#411 由 @dwijnand 创建。ThisProject
的处理问题。 #3609 由 @dwijnand 创建。file:///
。 #3805 by @eed3si9nproject/build.properties
过滤脚本测试。请参见以下内容。Project#withId
用于更改项目的 ID。 #3601 by @dwijnandreboot dev
命令,它会从启动目录中删除当前工件。这在使用 sbt 的开发版本时非常有用。 #3659 by @eed3si9nreload
之前添加了对 sbt 版本更改的检查。 #1055/#3673 by @RomanIakovlevinsideCI
,它指示 sbt 可能正在持续集成环境中运行。 #3672 by @RomanIakovlevnameOption
到Command
特质。 #3671 by @miklos-martinIO.chmod(..)
。 io#76 by @eed3si9nCompletions
中的displayOnly
等方法变为严格。 #3763 by @xuwei-k这为 sbt shell 和 build.sbt DSL 添加了统一的斜杠语法。与当前的<project-id>/config:intask::key
不同,这添加了<project-id>/<config-ident>/intask/key
,其中<config-ident>
是配置(如Compile
和Test
)的 Scala 标识符表示法。(旧的 shell 语法将继续起作用)
这些示例在 shell 和 build.sbt 中都有效。
Global / cancelable
ThisBuild / scalaVersion
Test / test
root / Compile / compile / scalacOptions
ProjectRef(uri("file:/xxx/helloworld/"),"root")/Compile/scalacOptions
Zero / Zero / name
inspect 命令现在输出可复制粘贴的内容
> inspect compile
[info] Task: sbt.inc.Analysis
[info] Description:
[info] Compiles sources.
[info] Provided by:
[info] ProjectRef(uri("file:/xxx/helloworld/"),"root")/Compile/compile
[info] Defined at:
[info] (sbt.Defaults) Defaults.scala:326
[info] Dependencies:
[info] Compile/manipulateBytecode
[info] Compile/incCompileSetup
....
#1812/#3434/#3617/#3620 by @eed3si9n and @dwijnand
sbt server 功能已重新设计,以使用语言服务器协议 3.0 (LSP) 作为线协议,该协议由 Microsoft 为 Visual Studio Code 创建。
为了发现正在运行的服务器,sbt 1.1.0 会在构建相对于./project/target/active.json
的位置创建一个端口文件
{"uri":"local:///Users/foo/.sbt/1.0/server/0845deda85cb41abcdef/sock"}
local:
表示一个 UNIX 域套接字。以下是我们如何使用nc
与服务器打招呼。(^M
可以发送Ctrl-V
,然后Return
)
$ nc -U /Users/foo/.sbt/1.0/server/0845deda85cb41abcdef/sock
Content-Length: 99^M
^M
{ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "initializationOptions": { } } }^M
sbt server 为 sbt 的 shell 命令添加了网络访问,因此除了接受来自终端的输入外,服务器还接受来自网络的输入。以下是我们如何调用compile
Content-Length: 93^M
^M
{ "jsonrpc": "2.0", "id": 2, "method": "sbt/exec", "params": { "commandLine": "compile" } }^M
正在运行的 sbt 会话现在应该排队compile
,并在有编译器警告和错误的情况下返回。
Content-Length: 296
Content-Type: application/vscode-jsonrpc; charset=utf-8
{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:/Users/foo/work/hellotest/Hello.scala","diagnostics":[{"range":{"start":{"line":2,"character":26},"end":{"line":2,"character":27}},"severity":1,"source":"sbt","message":"object X is not a member of package foo"}]}}
我们对 sbt server 的主要用例是工具集成,例如编辑器和 IDE。作为概念证明,我们创建了一个名为Scala (sbt)的 Visual Studio Code 扩展。
目前,该扩展能够
*.scala
文件时在根项目中运行compile
。 #3524 by @eed3si9nproject/build.properties
过滤脚本测试 对于所有存在project/build.properties
的脚本测试,都会读取sbt.version
属性的值。如果它的二进制版本与sbtBinaryVersion in pluginCrossBuild
不同,则测试将被跳过,并会记录一条指示此情况的消息。
这允许您定义跟踪最小支持 sbt 版本的脚本测试,例如 0.13.9 和 1.0.0-RC2。 #3564/#3566 by @jonas
根据 sbt、zinc、librarymanagement、util、io 和网站上的git shortlog -sn --no-merges v1.0.4..v1.1.0
,sbt 1.1.0 由 33 位贡献者完成:Eugene Yokota、Dale Wijnand、Antonio Cunei、Kenji Yoshida (xuwei-k)、Alexey Alekhin、Simon Schäfer、Jorge Vicente Cantero (jvican)、Miklos Martin、Jeffrey Olchovy、Jonas Fonseca、Andrey Artemov、Arnout Engelen、Dominik Winter、Krzysztof Romanowski、Roman Iakovlev、Wiesław Popielarski、Age Mooij、Allan Timothy Leong、Ivan Poliakov、Jason Zaugg、Jilen Zhang、Long Jinwei、Martin Duhem、Michael Stringer、Michael Wizner、Nud Teeraworamongkol、OlegYch、PanAeon、Philippus Baalman、Pierre Dal-Pra、Rafal Wojdyla、Saniya Tech、Tom Walford 以及其他许多贡献想法的人。谢谢!