これは 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) は、依存関係のロックを可能にするために連携して動作するはずの、いくつかの関連機能を追加しました。
ここで感謝するには多すぎるほど多くの人がいます。「クレジット」を参照してください。