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
でのsbtのハングアップを修正 #5945 by @eatkins.inputrc
ファイルのサポートを修正 #5973 by @xuwei-kMatchError
を引き起こす問題を修正 #5948 by @adpi2shellPrompt
とrelease*
キーの警告を修正 #5983/#5991 by @xirc and @eed3si9n<task>.value
マクロが不必要な「純粋な式は何もしません」という警告を引き起こす問題を修正 #5981 by @eed3si9nplugins
コマンドの出力を改善 #5932 by @aaabramovsbt 1.4.0の主な機能は次のとおりです。
ThisBuild / versionScheme
によるeviction警告の推測の排除sbt 1.4.0は、Scala Centerが提供するビルドサーバープロトコル(BSP)サポートを追加しました。主要な実装は、@eed3si9nのプロトタイプに基づいて、Adrien Piquerez(@adpi2)によって行われました。
sbt 1.4.0が起動すると、.bsp/sbt.json
という名前のファイルが作成されます。このファイルには、ビルドサーバープロトコルを使用してsbtサーバーと通信するコマンドラインプログラムであるsbt -bsp
を実行する方法に関する、機械可読な指示が含まれています。
.bsp
、.metals
、.bloop
ディレクトリがあれば削除します。sbt -Dsbt.semanticdb=true
を起動します。「sbtサーバーが起動しました」と表示されるまで待ちます。compile
と入力します。sbt 1.4.0は、すべてのタスクをサポートするsbtn
という公式のネイティブシンクライアントを追加しました。公式のsbtランチャー1.4.0を使用していて、偽物ではない場合は、--client
オプションを使用してネイティブシンクライアントを実行できます。
$ sbt --client compile
$ sbt --client shutdown
ネイティブシンクライアントはsbt(サーバー)をデーモンとして実行するため、2回目以降の呼び出しではJVMの起動と読み込み時間が回避されます。これは、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はこの情報を使用して、この情報が利用可能な場合にeviction警告の推測を排除します。#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 Analysisアーティファクトがその場所に公開されます。次に、マシン2からpullRemoteCache
を呼び出します。
起動時に、sbt 1.4.0 は使用されていない設定/タスクをチェックします。ほとんどの設定は他の設定/タスクの中間にあるため、デフォルトでlintに含まれます。特筆すべき例外は、コマンドによってのみ使用される設定です。オプトアウトするには、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)タスク合成とは異なり、条件付きタスクは、if
式で自然に期待されるように、then 節と else 節の評価を遅延させます。これは Def.taskDyn { ... }
でも既に可能ですが、動的タスクとは異なり、条件付きタスクは inspect
コマンドで動作します。詳細は sbt の Selective functor を参照してください。#5558 by @eed3si9n
sbt 1.4.0 は、実験的なインクリメンタルビルドのパイプライン化を追加しました。ビルドのビルドパイプラインを有効にするには
ThisBuild / usePipelining := true
一部のサブプロジェクトの早期出力の作成をオプトアウトするには
exportPipelining := false
sbt 1.4.0 は、Johannes Rudolph の sbt-dependency-graph プラグインをコードベースに統合しました。これはサブプロジェクトごとに多くのタスクを注入するため、プラグインは2つの部分に分割されています。- デフォルトで有効になっているMiniDependencyTreePlugin
は、dependencyTree
タスクを Compile
と Test
の設定に追加します - 次のものをproject/plugins.sbt
に追加することで有効になる、フル機能のDependencyTreePlugin
addDependencyTreePlugin
ThisBuild / useLog4J := true
を使用します。#5731 by @eatkinsval
を上から下に読み込みます #2232/#5448 by @eed3si9n.withAllowInsecureProtocol(true)
を使用した明示的なオプトインが必要です #5593 by @eed3si9n~
中に Ctrl-C を押すと、sbt をシャットダウンする代わりにシェルに戻ります #5804 by @eatkins-Dsbt.rootdir=true
なしで /
から sbt を実行しようとするとエラーが発生します #5112 by @eed3si9nState => State
を受け入れるように StateTransform
を更新しました #5260 by @eatkinsTERM
が "dumb" に設定されている場合、supershell をオフにします #5278 by @hvesalaisbt.ForkMain
のライブラリエンドポイントを追加しました #5315 by @olafurpgdoc
を無効にしないようにしました #5362 by @eatkinsInitialize[A]
に toTaskable
メソッドインジェクションを追加しました #5439 by @dwijnandsemanticdbVersion
を 4.3.7 に更新しました #5481 by @anilkumarmylaJsonFormat[A]
の代わりに JsonWriter[A]
の型クラスの証拠を必要とする Tracked.outputChangedW
と Tracked.inputChangedW
を追加しました #5513 by @bjaglinState
に 拡張メソッド を追加しました #5207 by @eed3si9ntestGrouping
に重み付けされたタグのサポートを追加しました #5527 by @frosforevernull
の場合の NullPointerError を修正しました #5526 by @3rwww1Def.promise
を追加しました #5552 by @eed3si9n-Dsbt.repository.publish.attempts
を 3 に設定) lm#340 by @izharahmdsbt 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。ありがとうございます!