sbt new
不會回顯字元的問題 #5954 by @eatkinsdependencyBrowseTree
等問題 #5967 by @naderghanbariclasses
目錄導致「classes 不存在」錯誤的問題 zinc#934 by @eed3si9nClassfileManager
輸出 #5990 by @smarterCtrl-C
和 Ctrl-D
處理 #5947/#5975 by @eatkins-Dsbt.color=true
在某些情況下無法運作的問題 #5960 by @eatkinsproject/target
為符號連結時發生 FileAlreadyExistsException
的問題 #5972 by @eatkinsbuild.sbt
和 --batch
上掛起的問題 #5945 by @eatkins.inputrc
檔案支援 #5973 by @xuwei-kMatchError
的問題 #5948 by @adpi2shellPrompt
和 release*
金鑰警告的問題 #5983/#5991 by @xirc 和 @eed3si9n<task>.value
巨集導致產生虛假的「純運算式沒有作用」警告的問題 #5981 by @eed3si9nplugins
命令輸出 #5932 by @aaabramovsbt 1.4.0 的重點功能是
ThisBuild / versionScheme
可消除驅逐警告中的猜測sbt 1.4.0 新增建置伺服器協定 (BSP) 支援,由 Scala Center 貢獻。主要實作由 Adrien Piquerez (@adpi2) 基於 @eed3si9n 的原型完成。
當 sbt 1.4.0 啟動時,它會建立一個名為 .bsp/sbt.json
的檔案,其中包含關於如何執行 sbt -bsp
的機器可讀取指示。sbt -bsp
是一個使用標準輸入和輸出,透過建置伺服器協定與 sbt 伺服器通訊的命令列程式。
.bsp
、.metals
、.bloop
目錄sbt -Dsbt.semanticdb=true
。等到顯示「sbt 伺服器已啟動」compile
以產生 SemanticDB 檔案sbt 1.4.0 新增一個名為 sbtn
的官方原生精簡用戶端,其支援所有任務。如果您使用的是官方 sbt 啟動器 1.4.0 而不是仿冒的,您可以使用 --client
選項來執行原生精簡用戶端
$ sbt --client compile
$ sbt --client shutdown
原生精簡用戶端會以守護程式方式執行 sbt (伺服器),這可避免第二次呼叫時的 JVM 啟動和載入時間。如果您想從系統 Shell (例如 Zsh 和 Fish) 使用 sbt,這會是一個選項。
完成時請記得呼叫 sbt --client shutdown
!如果您想透過環境變數啟用此功能,您可以將 SBT_NATIVE_CLIENT
設定為 true
。sbtn
二進位檔也可從 https://github.com/sbt/sbtn-dist/releases/tag/v1.4.0 取得
sbt 1.4.0 新增一個名為 ThisBuild / versionScheme
的新設定,用來追蹤建置的版本配置
ThisBuild / versionScheme := Some("early-semver")
支援的值為 "early-semver"
、"pvp"
和 "semver-spec"
。sbt 會將此資訊以屬性的形式包含在 pom.xml
和 ivy.xml
中。此外,當此資訊可用時,sbt 1.4.0 會使用此資訊來消除驅逐警告中的猜測。#5724 by @eed3si9n
sbt 1.4.0 / Zinc 1.4.0 將增量編譯期間追蹤的檔案路徑虛擬化。這樣做的好處是,只要事先列舉 ThisBuild / rootPaths
,增量編譯的狀態就可以跨不同的機器共享。
為了示範這一點,我們還在 sbt 中新增了實驗性的 快取編譯 功能。您只需要以下設定
ThisBuild / pushRemoteCacheTo := Some(MavenCache("local-cache", file("/tmp/remote-cache")))
然後從機器 1,呼叫 pushRemoteCache
。這會將 *.class
和 Zinc 分析成品發佈到該位置。接著,從機器 2,呼叫 pullRemoteCache
。
在啟動時,sbt 1.4.0 會檢查未使用的設定/任務。由於大多數設定都是其他設定/任務的中介,因此預設會將它們包含在 linting 中。值得注意的例外是僅由命令使用的設定。若要退出,您可以將其附加到 Global / excludeLintKeys
或將等級設定為不可見。
sbt 1.4.0 新增對條件任務 (或選擇性任務) 的支援。條件任務是一種新的任務,當 Def.task { ... }
由 if
運算式組成時會自動建立
bar := {
if (number.value < 0) negAction.value
else if (number.value == 0) zeroAction.value
else posAction.value
}
與常規 (Applicative) 任務組成不同,條件任務會延遲 then-clause 和 else-clause 的評估,這符合 if
運算式的自然預期。這已經可以使用 Def.taskDyn { ... }
實現,但與動態任務不同的是,條件任務可與 inspect
命令一起使用。請參閱 sbt 的選擇性函子 以取得更多詳細資料。#5558 by @eed3si9n
sbt 1.4.0 新增實驗性增量建置管線化。若要啟用建置的建置管線化
ThisBuild / usePipelining := true
若要退出針對某些子專案建立早期輸出
exportPipelining := false
sbt 1.4.0 將 Johannes Rudolph 的 sbt-dependency-graph 外掛程式納入程式碼庫。由於它會為每個子專案注入許多任務,因此該外掛程式被分為兩個部分: - 預設啟用的 MiniDependencyTreePlugin
,將 dependencyTree
任務帶入 Compile
和 Test
配置 - 完全功能的 DependencyTreePlugin
,透過將以下內容放入 project/plugins.sbt
來啟用
addDependencyTreePlugin
ThisBuild / useLog4J := true
來使用 Log4j。 #5731 由 @eatkins 貢獻val
#2232/#5448 由 @eed3si9n 貢獻.withAllowInsecureProtocol(true)
顯式選擇加入 #5593 由 @eed3si9n 貢獻~
期間按下 Ctrl-C 會返回 shell,而不是關閉 sbt #5804 由 @eatkins 貢獻/
執行 sbt 且沒有 -Dsbt.rootdir=true
,則會擲回錯誤 #5112 由 @eed3si9n 貢獻StateTransform
以接受 State => State
#5260 由 @eatkins 貢獻TERM
設定為 “dumb” 時關閉超級 shell #5278 由 @hvesalai 貢獻sbt.ForkMain
新增程式庫端點 #5315 由 @olafurpg 貢獻doc
失效 #5362 由 @eatkins 貢獻toTaskable
方法注入到 Initialize[A]
以進行元組語法 #5439 由 @dwijnand 貢獻semanticdbVersion
更新至 4.3.7 #5481 由 @anilkumarmyla 貢獻Tracked.outputChangedW
和 Tracked.inputChangedW
,這需要 JsonWriter[A]
的類型類證據,而不是 JsonFormat[A]
#5513 由 @bjaglin 貢獻State
,以方便 sbt 伺服器通訊 #5207 由 @eed3si9n 貢獻testGrouping
加權標籤的支援 #5527 由 @frosforever 貢獻null
時的 NullPointerError #5526 由 @3rwww1 貢獻Def.promise
,用於讓長時間執行的任務與另一個任務進行通訊 #5552 由 @eed3si9n 貢獻-Dsbt.repository.publish.attempts
設定為 3) lm#340 由 @izharahmd 貢獻sbt 1.4.0 由 34 位貢獻者共同完成。Ethan Atkins, Eugene Yokota (eed3si9n), Johannes Rudolph, Dale Wijnand, Adrien Piquerez, Jason Zaugg, Arnout Engelen, Josh Soref, Guillaume Martres, Maksim Ochenashko, Anil Kumar Myla, Brice Jaglin, Claudio Bley, João Ferreira, Steve Waldman, frosforever, Alex Zolotko, Heikki Vesalainen, Ismael Juma, Stephane Landelle, Jannik Theiß, izharahmd, lloydmeta, Alexandre Archambault, Eric Peters, Erwan Queffelec, Kenji Yoshida (xuwei-k), Martin Duhem, Olafur Pall Geirsson, Renato Cavalcanti, Vincent PERICART, nigredo-tori。 感謝!