UpdateLogging.Full
下的「正在解析...」記錄。lm#240 由 @hodga 提供-Dconfig.resource=/path/to/configFile
與 Gigahorse 衝突的問題。lm#241 由 @tanishiking 提供非常感謝所有協助改善 sbt 和 Zinc 1 的人員,感謝您們的使用、回報錯誤、改進我們的文件、移植建置、移植外掛程式,以及提交和審查提取請求。
根據 sbt、zinc、librarymanagement、util、io、launcher-package 和網站上的 git shortlog -sn --no-merges v1.1.5...v1.1.6
,sbt 1.1.6 由 15 位貢獻者共同完成: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 由 @eatkins 提供RejectedExectionExeption
堆疊追蹤。sbt#4058 由 @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、zinc、librarymanagement、util、io、launcher-package 和網站上的 git shortlog -sn --no-merges v1.1.4...v1.1.5
,sbt 1.1.5 由 21 位貢獻者共同完成: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 由 @eed3si9n 提供updateSbtClassifiers
。#4070/#3432 由 @steinybot 提供sbt -debug
將記錄層級變更為偵錯。lp#226 由 @eed3si9n 提供sbt.io.JavaMilli
。io#139 由 @dwijnand 提供-Dsbt.launcher.cp.prepend
JVM 旗標,用於修補 sbt。launcher#50 由 @fommil 提供長期以來,sbt 在 macOS 上執行觸發執行時一直存在問題。Ethan Atkins 合併來自他的 CloseWatch 的 MacOSXWatchService,為此問題提供修正。感謝 Ethan!
同樣感謝 Greg Methvin 和 Takari 的 directory-watcher。#3860/#4071/io#138 由 @eatkins 提供
在分析時,您會遇到一個棘手的問題,那就是在想要分析應用程式的開頭時,找出程序 ID。
為此,我們新增了 sbt.launcher.standby
JVM 旗標。從 sbt 1.1.4 開始,您可以執行
$ sbt -J-Dsbt.launcher.standby=20s exit
這會在執行其他任何動作之前倒數 20 秒。launcher#51 由 @eed3si9n 提供
Jason Zaugg 使用火焰圖(如果您還沒用過,請參考剖析 JVM 應用程式文章)發現,在 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 的人員,感謝您們的使用、回報錯誤、改進我們的文件、移植建置、移植外掛程式,以及提交和審查提取請求。
根據 sbt、zinc、librarymanagement、util、io、launcher-package 和網站上執行 git shortlog -sn --no-merges v1.1.2...v1.1.4
的結果,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
的 hashCode 來進行效能修復。lm#213 由 @retronym 提供-33000L
。#3991 由 @dwijnand 提供buildinfo.BuildInfo
。3967 由 @dwijnand 和 @xuwei-k 提供根據 sbt、zinc、librarymanagement、util、io、launcher-package 和網站上執行 git shortlog -sn --no-merges v1.1.1...v1.1.2
的結果,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
中的 Tab 自動完成功能。#3841/#3876 由 @eed3si9n 提供Extracted#append
,改用 appendWithSession
或 appendWithoutSession
。#3865 由 @dwijnand 提供autoStartServer
的新全域 Boolean
設定。請參閱下方。^^
的 Scala 版本。#3923 由 @dwijnand 提供sbt 1.1.1 新增一個名為 autoStartServer
的全域 Boolean
設定,預設設定為 true
。當設定為 true
時,sbt shell 會自動啟動 sbt 伺服器。否則,它將不會啟動伺服器,直到發出 startSever
命令。這可用於基於安全原因選擇停用伺服器。
根據 sbt、zinc、librarymanagement、util、io 和網站上執行 git shortlog -sn --no-merges v1.1.0 ..v1.1.0
的結果,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 提供,修復了 ~
相關問題 #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 由 @eed3si9n 貢獻。project/build.properties
篩選腳本測試。請參閱下方說明。Project#withId
以變更專案的 id。#3601 由 @dwijnand 貢獻。reboot dev
命令,它會從 boot 目錄中刪除目前的成品。這在處理 sbt 的開發版本時很有用。#3659 由 @eed3si9n 貢獻。reload
之前新增對 sbt 版本變更的檢查。#1055/#3673 由 @RomanIakovlev 貢獻。insideCI
,表示 sbt 很可能在持續整合環境中執行。#3672 由 @RomanIakovlev 貢獻。nameOption
新增至 Command
trait。#3671 由 @miklos-martin 貢獻。IO.chmod(..)
。io#76 由 @eed3si9n 貢獻。Completions
中的 displayOnly
等方法嚴格執行。#3763 由 @xuwei-k 貢獻。這為 sbt shell 和 build.sbt DSL 新增統一的斜線語法。取代目前的 <project-id>/config:intask::key
,新增 <project-id>/<config-ident>/intask/key
,其中 <config-ident>
是 Scala 識別符號表示法,用於類似 Compile
和 Test
的組態。(舊的 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 由 @eed3si9n 和 @dwijnand 貢獻
sbt 伺服器功能已重新設計,使用 Language Server Protocol 3.0 (LSP) 作為傳輸協定,這是 Microsoft 為 Visual Studio Code 建立的協定。
為了探索正在執行的伺服器,sbt 1.1.0 會在相對於組建的 ./project/target/active.json
位置建立一個 port 檔案
{"uri":"local:///Users/foo/.sbt/1.0/server/0845deda85cb41abcdef/sock"}
local:
表示 UNIX 網域 socket。以下是如何使用 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 伺服器新增網路存取權限給 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 伺服器設想的主要使用案例是工具整合,例如編輯器和 IDE。作為概念驗證,我們建立了一個名為 Scala (sbt) 的 Visual Studio Code 擴充功能。
目前此擴充功能可以
*.scala
檔案時,於根專案執行 compile
。#3524 由 @eed3si9n 貢獻。project/build.properties
篩選腳本測試 對於所有存在 project/build.properties
的腳本測試,會讀取 sbt.version
屬性的值。如果其二進制版本與 pluginCrossBuild
中的 sbtBinaryVersion
不同,則會跳過測試並記錄指示此訊息的訊息。
這讓您可以定義追蹤最小支援 sbt 版本的腳本測試,例如 0.13.9 和 1.0.0-RC2。#3564/#3566 由 @jonas 貢獻。
根據 sbt、zinc、librarymanagement、util、io 和 website 的 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,以及許多貢獻想法的其他人士。謝謝你們!