これは sbt 1.0.x シリーズのホットフィックスリリースです。
ArrayIndexOutOfBoundsException
が発生するのを修正します。 ivy#27 by @xuwei-k-jvm-debug
を修正します。 launcher-package197 by @mkurzrun
がデバッグレベルのログを出力するのを修正します。 #3655/#3717 by @cuneitestQuick
のパフォーマンスの低下を修正します。 #3680/#3720 by @OlegYchtemplateStats()
がスレッドセーフでない問題を回避します。 #3743 by @cuneihttp:
および https:
に対してのみ登録して、よりプラグインフレンドリーにします。 lm183 by @tpunderexpr
を使用して、bc
に関連するスクリプトの問題を修正します。 launcher-package#199 by @thatfulvioguysbt および Zinc 1 を使用し、バグを報告し、ドキュメントを改善し、ビルドを移植し、プラグインを移植し、プルリクエストを送信およびレビューすることで、sbt および Zinc 1 の改善にご協力いただいた皆様に、心より感謝申し上げます。
このリリースは、sbt、zinc、librarymanagement、util、io、および website の git shortlog -sn --no-merges v1.0.3..v1.0.4
によると、17 人の貢献者によって提供されました。Eugene Yokota, Kenji Yoshida (xuwei-k), Jorge Vicente Cantero (jvican), Dale Wijnand, Leonard Ehrenfried, Antonio Cunei, Brett Randall, Guillaume Martres, Arnout Engelen, Fulvio Valente, Jens Grassel, Matthias Kurz, OlegYch, Philippus Baalman, Sam Halliday, Tim Underwood, Tom Most. ありがとうございました!
これは sbt 1.0.x シリーズのホットフィックスリリースです。
~
がループで再コンパイルされる問題を修正します。 #3501/#3634 by @dwijnandgetGenericParameterTypes
に対して null
を返す問題を回避します。 zinc#446 by @jvican/
を修正します。 lm#170 by @laughedelicsbt.watch.mode
システムプロパティを追加します。詳細については、下記をご覧ください。sbt 1.0.0 では、Java 1.7 の NIO WatchService
に基づいたソース変更を監視する新しいメカニズムが導入されました。一部のプラットフォーム (特に macOS) では、これにより、変更が検出されるまでに長い遅延が発生しました。これらのプラットフォーム用の代替 WatchService
は sbt 1.1.0 で計画されており (#3527)、当面はどのウォッチサービスを選択するかを選択するオプションが追加されました。
次のサポートされている値を持つ新しい sbt.watch.mode
JVM フラグが追加されました
polling
: (macOS のデフォルト) ファイルシステムの変更をポーリングします (sbt 0.13 で使用されていたメカニズム)。nio
(他のプラットフォームのデフォルト): NIO ベースの WatchService
を使用します。macOS 以外のマシンで長い遅延が発生する場合は、sbt オプションに -Dsbt.watch.mode=polling
を追加してみてください。
#3597 by @stringbean
sbt および Zinc 1 を使用し、バグを報告し、ドキュメントを改善し、ビルドを移植し、プラグインを移植し、プルリクエストを送信およびレビューすることで、sbt および Zinc 1 の改善にご協力いただいた皆様に、心より感謝申し上げます。
このリリースは、sbt、zinc、librarymanagement、util、io、および website の git shortlog -sn --no-merges v1.0.2..v1.0.3
によると、15 人の貢献者によって提供されました。Eugene Yokota, Dale Wijnand, Michael Stringer, Jorge Vicente Cantero (jvican), Alexey Alekhin, Antonio Cunei, Andrey Artemov, Jeffrey Olchovy, Kenji Yoshida (xuwei-k), Dominik Winter, Long Jinwei, Arnout Engelen, Justin Kaeser, Leonard Ehrenfried, Sakib Hadžiavdić. ありがとうございました!
これは sbt 1.0.x シリーズのホットフィックスリリースです。
deliver
タスクを修正し、より適切な名前のタスクとして makeIvyXml
を追加します。 #3487 by @cuneiOkUrlFactory
の使用を置き換え、接続リークを修正します。 lm#164 by @dprattrun
と bgRun
がクラスパス内のディレクトリへの変更を検出しない問題を修正します。 #3517 by @dwijnand++
が crossScalaVersion
の値を変更しないように修正します。 #3495/#3526 by @dwijnandconsoleProject
を再修正します。 zinc#386 by @dwijnandrepositories
オーバーライドと組み合わせて使用するときの JavaNetAuthenticator
での NPE を回避するために、Gigahorse の内部使用を有効/無効にする JVM フラグ sbt.gigahorse
を追加します。 lm#167 by @cuneisbt.server.autostart
を追加します。これにより、サーバーを手動で起動するための新しい startServer
コマンドも追加されます。 by @eed3si9nsbt および Zinc 1 を使用し、バグを報告し、ドキュメントを改善し、プラグインを移植し、プルリクエストを送信およびレビューすることで、sbt および Zinc 1 の改善にご協力いただいた皆様に、心より感謝申し上げます。
このリリースは、sbt、zinc、librarymanagement、およびウェブサイト上で git shortlog -sn --no-merges v1.0.1..v1.0.2
を実行した結果、19人のコントリビューターによって提供されました。Dale Wijnand, Eugene Yokota, Kenji Yoshida (xuwei-k), Antonio Cunei, David Pratt, Karol Cz (kczulko), Amanj Sherwany, Emanuele Blanco, Eric Peters, Guillaume Bort, James Roper, Joost de Vries, Marko Elezovic, Martynas Mickevičius, Michael Stringer, Răzvan Flavius Panda, Peter Vlugter, Philippus Baalman, and Wiesław Popielarskiの皆様、ありがとうございました!
これは sbt 1.0.x シリーズのホットフィックスリリースです。
+
コマンドのコマンドサポートを修正しました。sbt 1.0に追加された+
は、crossScalaVersions
を尊重してサブプロジェクトをトラバースしますが、引数としてコマンドを受け付けなくなっていました。これにより、そのサポートが復活します。#3446 by @jroperaddSbtPlugin
が正しいバージョンのsbtを使用するように修正しました。#3442 by @dwijnandrun in Compile
タスクがRuntime
構成を含まない問題を、run
をbgRun
で実装し直すことで修正しました。#3477 by @eed3si9ninspect
の潜在的なオプションとしてactual
を表示します。#3335 by @DuhemmNullPointerException
の回避を試みます。util#121 by @eed3si9n監視対象ソース機能は、sbt 0.13からsbt 1.0への移行でNIOを使用して大幅な変更が行われましたが、明確な移行パスがありませんでした。そのため、sbt 1.0.1で修正します。
まず、sbt.WatchSource
はsbt.internal.io.Source
の新しいエイリアスです。キーの名前がwatchSources
であるため、覚えやすいと思います。次に、def apply(base: File)
とdef apply(base: File, includeFilter: FileFilter, excludeFilter: FileFilter)
コンストラクタがsbt.WatchSource
のコンパニオンオブジェクトに追加されました。
下位互換性のために、sbt 1.0.1では、File
からSeq[WatchSource]
への+=
サポート(Append
インスタンス)を追加します。
したがって、監視したいディレクトリがある場合は
watchSources += WatchSource(sourceDirectory.value)
ファイルのリストがある場合
watchSources ++= (sourceDirectory.value ** "*.scala").get
#3438 by @Duhemm; #3478 and io#74 by @eed3si9n
sbt 0.13.xからの移行も参照してください。
.copy(foo = xxx)
をwithFoo(xxx)
に移行してください。たとえば、UpdateConfiguration
、RetrieveConfiguration
、PublishConfiguration
はビルダーパターンを使用するようにリファクタリングされています。config("xyz")
は、val Xyz = config("xyz")
のように、大文字のval
に直接代入する必要があります。これにより、lhs識別子が構成にキャプチャされるため、後でシェルから使用できます。publishTo
とotherResolvers
をSettingKeysからTaskKeysに変更します。#2059/#2662 by @dwijnandPath.relativizeFile(baseFile, file)
はIO.relativizeFile(baseFile, file)
に名前が変更されます。PathFinder
の.***
メソッドは.allPaths
メソッドに名前が変更されます。PathFinder.x_!(mapper)
はPathFinder
のdef pair
に移動されます。sbt.Path
の一部のメソッド(relativeTo
、rebase
、flat
など)は、sbtパッケージオブジェクトに混入されたため、デフォルトの名前空間には存在しなくなりました。再びアクセスするには、sbt.io.Path
を使用してください。Global
の名前をGlobalScope
と区別するためにZero
に変更します。@eed3si9nupdate.value.configuration(...)
のように、構成を参照するためにString
が使用されていた箇所でConfigRef
を使用します。Configuration
を渡してください。これは暗黙的にConfigRef
に変換されます。sourceArtifactTypes
とdocArtifactTypes
をSet[String]
設定からSeq[String]
設定に変更します。--<command>
からearly(<command>)
に名前を変更します。publish-local
の代わりにpublishLocal
を使用します)。-error
、-warn
、-info
、-debug
が、"early(error)"
などの省略形として追加されました。sbt.Process
とsbt.ProcessExtra
は削除されました。代わりにscala.sys.process
を使用してください。incOptions.value.withNameHashing(...)
オプションは削除されました。TestResult.Value
はTestResult
と呼ばれるようになりました。%%
を使用する必要があります。非推奨のものが削除されました:
Build
トレイトが削除されました。build.sbtに移行してください。自動プラグインとBuild
トレイトはうまく連携せず、その機能は現在、主にマルチプロジェクトbuild.sbtによって包含されています。Project(...)
コンストラクタは、2つのパラメータに制限されています。これは、settings
パラメータが自動プラグインとうまく連携しないためです。代わりにproject
を使用してください。<<=
、<+=
、<++=
が削除されました。 :=、+=、および++=に移行してください。これらの演算子は多くのユーザーにとって混乱の原因であり、0.13ドキュメントから長い間削除され、sbt 0.13.13以降正式に非推奨とされていました。sbt.Plugin
トレイトは削除されました。AutoPluginに移行してください。自動プラグインは構成が容易で、相互に連携しやすくなっています。Project
からsettingsSets
メソッド(add/setSbtFiles
も同様)を削除します。InputTask
apply
メソッドとinputTask
DSLメソッドを削除します。Def.inputTask
とDef.spaceDelimited().parsed
を使用してください。ProjectReference
暗黙的なリフトを削除します。RootProject(<uri>)
、RootProject(<file>)
、またはLocalProject(<string>)
を使用してください。seq(..)
DSLメソッドを削除します。Seq
を使用するか、ラップせずに設定を渡してください。File
/Seq[File]
設定エンリッチメントを削除します。.value
とDef.setting
を使用してください。SubProcess
apply
オーバーロードを削除します。SubProcess(ForkOptions(runJVMOptions = ..))
を使用してください。toError(opt: Option[String]): Unit
を削除します(opt foreach sys.error
と同等)。ScalaRun#run
をラップするために使用する場合、代替はscalaRun.run(...).failed foreach (sys error _.getMessage)
ですconsole
タスクを修正します。zinc#295 by @dwijnandupdate
タスクのタスクキャッシュを修正します。#3233 by @eed3si9nbuild.sbt
の静的検証を提供しました。以下を参照してくださいscalas
を使用したスクリプトモードでは、起動ログレベルが-error
に低下します。#840 by @eed3si9nivyLoggingLevel
がUpdateLogging.Quiet
に低下します。@eed3si9nbuild.sbt
(*.sbt
に一致)ファイルの名前のロギングを追加します。#1911 by @valydiaaggregate
をビルドsbtファイル内の現在のプロジェクトに対して呼び出す機能を追加します。By @xuwei-kinspect tree
などのコマンドによって出力されるASCIIグラフの最大幅を制御する新しいグローバル設定asciiGraphWidth
を追加します。デフォルト値は、以前ハードコードされていた40文字の値に対応します。By @RomanIakovlev.^
および^^
コマンドを移植します。以下を参照してください。autoImport
を検出するようになりました。#3115 by @jvicanInteractionService
を追加しました。#3182 by @eed3si9nPollingWatchService
と Java NIO を抽象化する新しい WatchService
を追加しました。io#47 by @Duhemm (The Scala Center を代表して)sbt.io.CopyOptions()
を受け入れる IO.copyFile
および IO.copyDirectory
のバリアントを追加しました。詳細は下記を参照してください。Path.directory
および Path.contentOf
を sbt-native-packager から寄贈されました。io#38 by @muuki88Grzegorz Kossakowski 氏 (Lightbend が委託) によって Zinc 1.0 に導入された主な改善点は、クラスベースの名前ハッシュです。これにより、大規模プロジェクトでの Scala のインクリメンタルコンパイルが高速化されます。
Zinc 1.0 の名前ハッシュは、ソースファイルレベルではなく、クラスレベルでコードの依存関係を追跡します。GitHub の issue sbt/sbt#1104 には、いくつかのプロジェクトで既存のクラスにメソッドを追加した場合の比較がいくつかリストされています。
ScalaTest AndHaveWord class: Before 49s, After 4s (12x)
Specs2 OptionResultMatcher class: Before 48s, After 1s (48x)
scala/scala Platform class: Before 59s, After 15s (3.9x)
scala/scala MatchCodeGen class: Before 48s, After 17s (2.8x)
これは、クラスの構成方法などのいくつかの要因に依存しますが、3 倍から 40 倍の改善が見られます。高速化の理由は、ソースファイルからクラスを分離することで、以前よりもコンパイルするソースファイルの数が少なくなるためです。scala/scala の Platform クラスにメソッドを追加する例では、sbt 0.13 の名前ハッシュでは 72 個のソースをコンパイルしていましたが、新しい Zinc では 6 個のソースしかコンパイルしません。
xsbti.compile
パッケージ下の Java クラス (例: IncOptions
) はコンストラクタを隠蔽します。ファクトリメソッド xsbti.compile.Foo.of(...)
を使用してください。ivyScala: IvyScala
キーの名前を scalaModuleInfo: ScalaModuleInfo
に変更しました。xsbti.Reporter#log(...)
はパラメータとして xsbti.Problem
を受け取ります。古い log(...)
に委譲するには、log(problem.position, problem.message, problem.severity)
を呼び出してください。xsbi.Maybe
、xsbti.F0
、および sxbti.F1
は、対応する Java 8 クラスである java.util.Optional
、java.util.Supplier
、および java.util.Function
に変更されました。sbt 1.0 にはサーバー機能が含まれており、IDE やその他のツールが JSON API を介してビルドの設定をクエリしたり、コマンドを呼び出したりできます。sbt 0.13 のインタラクティブシェルが shell
コマンドで実装されているのと同様に、「server」もまた、人間の入力とネットワーク入力の両方をリッスンする単なる shell
コマンドです。ユーザーとしては、サーバーによる影響は最小限であるはずです。
2016 年 3 月に、「サーバー」機能を可能な限り小さくするために再起動しました。機能リストを絞り込むために、IntelliJ の sbt インターフェイスに取り組んでいる JetBrains の @jastice 氏と協力しました。sbt 1.0 には、当初望んでいたすべての機能があるわけではありませんが、長期的には、このシステムを使用して IDE と sbt エコシステム間の統合が改善されることを願っています。たとえば、IDE はコンパイルタスクを発行し、コンパイラの警告を JSON イベントとして取得できるようになります。
{"type":"xsbti.Problem","message":{"category":"","severity":"Warn","message":"a pure expression does nothing in statement position; you may be omitting necessary parentheses","position":{"line":2,"lineContent":" 1","offset":29,"pointer":2,"pointerSpace":" ","sourcePath":"/tmp/hello/Hello.scala","sourceFile":"file:/tmp/hello/Hello.scala"}},"level":"warn"}
追加されたもう 1 つの関連機能は bgRun
タスクです。たとえば、これにより、サーバープロセスをバックグラウンドで実行しながら、それに対してテストを実行できます。
sbt 1.0 では、タスク内の if 式と匿名関数の本体内での .value
呼び出しを禁止します。@sbtUnchecked
アノテーションを使用すると、このチェックをオーバーライドできます。
静的検証では、タスクの本体で .value
を呼び出すのを忘れた場合も検出します。
sbt 1.0 では、エビクション警告の表示が改善されました。
以前
[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn] * com.google.code.findbugs:jsr305:2.0.1 -> 3.0.0
[warn] Run 'evicted' to see detailed eviction warnings
以後
[warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[warn]
[warn] * com.typesafe.akka:akka-actor_2.12:2.5.0 is selected over 2.4.17
[warn] +- de.heikoseeberger:akka-log4j_2.12:1.4.0 (depends on 2.5.0)
[warn] +- com.typesafe.akka:akka-parsing_2.12:10.0.6 (depends on 2.4.17)
[warn] +- com.typesafe.akka:akka-stream_2.12:2.4.17 () (depends on 2.4.17)
[warn]
[warn] Run 'evicted' to see detailed eviction warnings
@jrudolph の sbt-cross-building は、プラグイン作成者向けのプラグインです。これは、+
および ++
と同様に、クロスコマンド ^
と sbtVersion スイッチコマンド ^^
を追加しますが、メジャーバージョン間で複数の sbt バージョンを切り替えるために使用します。sbt 0.13.16 は、これらのコマンドを sbt にマージしました。これは、プラグインを sbt 1.0 に移行する際に、提供される機能が役立つためです。
シェルから pluginCrossBuild
の sbtVersion
を切り替えるには、次を使用します。
^^ 1.0.0-M5
これで、プラグインは sbt 1.0.0-M5 (およびその Scala バージョン 2.12.2) でビルドされます。
特定の sbt バージョンに固有の変更を加える必要がある場合は、src/main/scala-sbt-0.13
および src/main/scala-sbt-1.0.0-M5
に含めることができます。ここでは、バイナリの sbt バージョン番号が接尾辞として使用されます。
複数の sbt バージョンにわたってコマンドを実行するには、次を設定します。
crossSbtVersions := Vector("0.13.15", "1.0.0-M5")
次に、次を実行します。
^ compile
#3133 by @eed3si9n (0.13.16-M1 からフォワードポート)
sbt IO 1.0 では、sbt.io.CopyOptions()
を受け入れる IO.copyFile
および IO.copyDirectory
のバリアントが追加されました。CopyOptions()
は、ビルダーパターンに似た擬似ケースクラスの例です。
import sbt.io.{ IO, CopyOptions }
IO.copyDirectory(source, target)
// The above is same as the following
IO.copyDirectory(source, target, CopyOptions()
.withOverwrite(false)
.withPreserveLastModified(true)
.withPreserveExecutable(true))
sbt 1.0 では、Lightbend の Eugene Yokota (@eed3si9n) と Scala Center の Martin Duhem (@Duhemm) が共同で作成したライブラリ管理 API が追加されました。この API は、Apache Ivy と、代替の依存関係解決エンジンである Ivy、キャッシュされた解決、および Coursier を抽象化することを目的としています。
Ivy エンジンの並列アーティファクトダウンロードは、Scala Center の Jorge (@jvican) によって提供されました。また、Network API として Gigahorse OkHttp が導入され、アーティファクトのダウンロードにも Square OkHttp が使用されています。
lm#124 by @eed3si9n/@Duhemm、lm#90 by @jvican/@jsuereth および lm#104 by @eed3si9n。
Scala Center の Jorge (@jvican) は、Google Protocol Buffer を使用した Zinc の内部ストレージ用のバイナリ形式を提供しました。新しい形式には、主に 3 つの利点があります。
依存関係のロック機能はまだ開発中ですが、Scala Center の Jorge (@jvican) は、依存関係のロックを可能にするために連携して動作するはずの、いくつかの関連機能を追加しました。
ここで感謝するには多すぎるほど多くの人がいます。「クレジット」を参照してください。