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。ありがとうございます!