プラグインを作成している場合は、1.2.1以降を使用し、1.2.0は避けてください。
1.2.0で意図せず前方バイナリ互換性を壊してしまいました。sbt 1.2.0を使用してsbtプラグインを公開した場合、sbt 1.0.xまたは1.1.xからは使用できません。sbt 1.2.1ではこの変更を元に戻すため、前方互換性が復元されます。残念ながら、これは`inThisBuild(...)`などで可変長引数を使用できなくなることを意味します。
`AutoPlugin`で0.13.5で行ったように、将来的に前方互換性を壊す可能性がありますが、トレードオフに見合う場合のみです。
2つ目の回帰修正は、1.2.0で表示される可能性のある警告の壁に対するものです。
[warn] The project ProjectRef(uri("file:/Users/xxx/work/akka/"), "akka-actor-typed") references an unknown configuration "multi-jvm" and was guessed to be "Multi-jvm".
[warn] This configuration should be explicitly added to the project.
[warn] The project ProjectRef(uri("file:/Users/xxx/work/akka/"), "akka-actor-typed-tests") references an unknown configuration "multi-jvm" and was guessed to be "Multi-jvm".
[warn] This configuration should be explicitly added to the project.
元の問題は、統合スラッシュ構文が、設定がサブプロジェクトの一部ではない場合に設定名を選択しないことでした。この警告は重要ではないため、このパッチリリースで削除しています。
プラグイン作成者は、カスタム設定を非表示として宣言し、次のようにサブプロジェクトに追加し始めることができます。
import sbt._
import sbt.Keys._
object ParadoxPlugin extends AutoPlugin {
val ParadoxTheme = config("paradox-theme").hide
override def projectConfigurations: Seq[Configuration] = Seq(ParadoxTheme)
....
}
統合スラッシュ構文パーサーを強化して、より堅牢にすることも検討しています。
sbtとZinc 1の改善に貢献してくれた皆様に心から感謝申し上げます。使用、バグ報告、ドキュメントの改善、ビルドの移植、プラグインの移植、プルリクエストの提出とレビューをしていただきありがとうございました。
sbt、zinc、librarymanagement、util、io、launcher-package、websiteの`git shortlog -sn --no-merges v1.2.1...v1.2.0`によると、sbt 1.2.1は4人の貢献者によって開発されました:Eugene Yokota、Aaron S. Hawley、Ethan Atkins、Allan Renucci。ありがとうございます!また、これらの問題を報告してくれたChes MartinとYoshida-sanにも特別な感謝を申し上げます。
**警告**:1.2.0で前方互換性の破壊が見つかったため、sbt 1.2.1以降へのアップグレードをお勧めします。
sbt 1.2の主な機能は、クロスJDKフォーキング、複合プロジェクト、実験的なシンクライアントです。しかし、sbt 1.1以降6ヶ月間蓄積してきた多くのバグ修正と機能強化があります。
`SbtPlugin`はsbtプラグインのプロジェクトを宣言するためのプラグインです。これにより、スクリプトテストが自動的に導入され、`sbtPlugin := true`が設定されます。
lazy val root = (project in file("."))
.enablePlugins(SbtPlugin)
**互換性に関する注意**:`ScriptedPlugin`はトリガーされたプラグインではなくなりました。
フォークされた`run`と`test`では、`java++`でJavaホームを切り替えられるようになりました。
sbt:helloworld> run
[info] Running (fork) Hello
[info] 1.8.0_171
sbt:helloworld> java++ 10!
[info] Reapplying settings...
sbt:helloworld> run
[info] Running (fork) Hello
[info] 10.0.1
sbtは`discoveredJavaHomes`設定にJavaホームを検出しようとし、shyiko/jabbaをサポートします。これは`Global / javaHomes`で拡張できます。
Global / javaHomes += "6" -> file("/something/java-6")
この機能は、古いJVMでライブラリをテストして互換性を確認することを目的としています。
#4139 by @2m、@cunei、および@eed3si9n
2015年、James RoperはscalaVersionでフィルタリングされた集約をsbt-dogeに貢献しました。この機能は、Rui Gonçalves(@ruippeixotog)によって#3698/#3995でsbt 1.2に戻ってきました!
これは、スイッチコマンド`++`を拡張して、オプションの`
> ++2.12.7 compile
これは`++2.12.7`が有効なサブプロジェクトのみを集約します。これは、一部のサブプロジェクトが2.11のみなど、ビルドに複数のバージョンがある場合に便利です。
sbt 1.2.0では、「複合プロジェクト」トレイトが導入され、プラグイン作成者はクロスビルドなど、サブプロジェクトを生成できるようになりました。
trait CompositeProject {
def componentProjects: Seq[Project]
}
これは@BennyHillによって#4056として貢献されました。
**実験的**。`CompositeProject`のリファレンス実装として、sbt-projectmatrixプラグインによって導入された新しいDSLである`projectMatrix`を実装しました。
lazy val core = (projectMatrix in file("core"))
.scalaVersions("2.12.7", "2.11.12")
.settings(
name := "core"
)
.jvmPlatform()
lazy val app = (projectMatrix in file("app"))
.dependsOn(core)
.scalaVersions("2.12.7")
.settings(
name := "app"
)
.jvmPlatform()
このプラグインの目的は、サブプロジェクトを使用して表現されるクロスビルド(Scalaバージョン、プラットフォームなど)の一般的な概念をサポートすることです。上記の`projectMarix`は、`coreJVM2_12`、`coreJVM2_11`、`appJVM2_12`の3つのサブプロジェクトを生成します。
sbt 1.2.0では、`VersionNumber()`データ型にセマンティックバージョンセレクターが導入され、基本的な一致、比較(`<=`、`<`、`>=`、`>`)、組み合わせ(`>1.0.0 <2.0.0`、`||`)、範囲(`A.B.C - D.E.F`)、ワイルドカード(`2.12.x`)がサポートされるようになりました。
scala> import sbt.librarymanagement.{ VersionNumber, SemanticSelector }
import sbt.librarymanagement.{VersionNumber, SemanticSelector}
scala> VersionNumber("2.12.5").matchesSemVer(SemanticSelector(">=2.12"))
res1: Boolean = true
scala> VersionNumber("2.12.5").matchesSemVer(SemanticSelector("<2.12"))
res2: Boolean = false
scala> VersionNumber("2.13.0-M4").matchesSemVer(SemanticSelector("2.13"))
res3: Boolean = false
scala> VersionNumber("2.12.5").matchesSemVer(SemanticSelector("2.12.1 - 2.12.7"))
res4: Boolean = true
scala> VersionNumber("2.12.5").matchesSemVer(SemanticSelector("2.12.x"))
res5: Boolean = true
scala> VersionNumber("2.12.5").matchesSemVer(SemanticSelector("2.11.x || 2.12.x"))
res6: Boolean = true
**注意**:現時点ではライブラリ管理には影響ありません。
これはRikito Taniguchi(@tanishiking)によってlm#239として貢献されました。
IntelliJから、ビルドにプラグインを安全に挿入するリクエストがありました。sbt 1.2.0では、それを行うための`-addPluginSbtFile`コマンドが追加されました。
$ cat /tmp/extra.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7")
$ sbt -addPluginSbtFile=/tmp/extra.sbt
...
sbt:helloworld> plugins
In file:/xxxx/hellotest/
...
sbtassembly.AssemblyPlugin: enabled in root
実験的機能です。sbtサーバーはプラグインを介して拡張できるようになりました。
Global / serverHandlers += ServerHandler({ callback =>
import callback._
import sjsonnew.BasicJsonProtocol._
import sbt.internal.protocol.JsonRpcRequestMessage
ServerIntent(
{
case r: JsonRpcRequestMessage if r.method == "lunar/helo" =>
jsonRpcNotify("lunar/oleh", "")
()
},
PartialFunction.empty
)
この機能はまだ実験段階であり、APIは将来変更される可能性があります。
実験的機能です。sbt 1.2.0では、-client
という新しいモードが追加されました。sbtを-client
コマンドで起動すると、ビルドはロードされなくなり、代わりにJSON-RPCを介してsbtサーバーのインスタンスに接続しようとします。サーバーが実行されていない場合(ポートファイルが見つからない場合)、新しいJVMでsbtの新しいインスタンスが完全にフォークされます。
これにより、ターミナルシェルまたはエディターからsbt
を呼び出すことができます。
$ time sbt -client clean
[info] entering *experimental* thin client - BEEP WHIRR
[info] server was not detected. starting an instance
[info] waiting for the server...
[info] waiting for the server...
[info] waiting for the server...
[info] waiting for the server...
[info] server found
> clean
[success] completed
sbt -client clean 9.23s user 2.33s system 22% cpu 50.558 total
# server stays
$ ps | rg java
21860 ttys015 1:22.43 java -Xms2048M -Xmx2048M -Xss2M -jar /usr/local/Cellar/sbt/1.1.6/libexec/bin/sbt-launch.jar
22014 ttys015 0:00.00 rg java
$ time sbt -client clean
[info] entering *experimental* thin client - BEEP WHIRR
> clean
[info] Updating ...
[info] Done updating.
[success] completed
sbt -client clean 3.39s user 1.75s system 104% cpu 4.898 total
サーバーを終了するには、sbt -client shutdown
を実行します。#4227 by @eed3si9n
さらに、Rustを使用して実装された代替シンクライアントとしてcb372/sbt-clientとdwijnand/sbtlもあります。
-
、--
、---
を削除しました。代わりにonFailure
、sbtClearOnFailure
、resumeFromFailure
を使用してください。#4124++
がサブプロジェクトに影響を与えない場合、失敗するようにしました。#4269 by @eed3si9nCommand.process(String, State): State
を再導入しました。#4023 by @dwijnandactive.json
が削除されない問題を修正しました。#4194 by @veera83372CreateFile()
failed」)を修正しました。io#134 by @cunei.value
が欠落しているのを検出するリンターを修正しました。#4090 by @eed3si9nremoveEscapeSequences
のStringIndexOutOfBoundsException
を修正しました。util#139 by @dwijnandJavaNetAuthenticator
を修正しました。lm#177 by @eed3si9nclassOf[A]
を拾わないクラス依存関係を修正しました。zinc#510 by @natansilskip
キーのドキュメントを修正しました。#3926 by @dkimGlobal / cancelable
がtrue
に設定されている場合の、フォークされたテストでのCtrl-C処理を修正しました。#4226 by @driquelmerun
のスタックトレースを修正しました。#4232 by @eed3si9nsbt new
で使用されるGiter8のバージョンを0.11.0に上げ、様々な問題を修正しました。#4263 by @eed3si9nThisBuild / evictionWarningOptions
を使用して設定可能にしました。lm211 and #3947 by @exoegoinThisBuild(...)
、inConfig(C)(...)
、inTask(t)(...)
、inScope(scope)(...)
で可変長引数を許可しました。#4106 by @dwijnandrun
のように動作するfgRun
とfgRunMain
タスクを追加しました。#4216 by @agaro1121test.script
とpending.script
をサポートしました。#4220 by @regadasinspect
コマンドでエイリアスをサポートしました。#4221 by @gpoirier~
の監視メッセージに現在のプロジェクトIDを追加しました。#2038 / #3813 by @dwijnandPathFinder#get
をget()
に変更しました。io#104 by @dwijnandinConfigurationsByKeys
とinConfigurationsByRefs
のファクトリーメソッドを追加しました。#3994lastGrep
、loadFailed
などのコマンドを追加しました。#4080 by @naferx、#4159 by @Asamsig、and #4169 by @tiqwababout
コマンドでプラグインリストをソートしてインデントするようになりました。#4187 by @mcanlas-Dsbt.offline
でoffline
設定を設定するようになりました。#4198 by @eed3si9nIO.directoryURI
での不要なURI
のコピーの作成を防ぎました。io#132 by @jrudolphinitStringCodecs
でのreflect universeの初期化を回避しました。util#153 by @jrudolphParsers.validID
を高速化しました。#3952 by @jrudolphfor
内包表記を手動で作成することで、スコープの委譲を最適化しました。#4003 by @jrudolph and @eed3si9nvar
の代わりにval
を使用しました。#4253 by @xuwei-ksbtとZinc 1の改善にご協力いただいた皆様に改めて感謝申し上げます。
sbt 1.2.0は60人のコントリビューターによって実現されました。Dale Wijnand、Eugene Yokota、Kenji Yoshida (xuwei-k)、Yasuhiro Tatsuno (exoego)、Łukasz Wawrzyk、Jorge Vicente Cantero (jvican)、Alistair Johnson、Antonio Cunei、Jason Zaugg、Rikito Taniguchi (tanishiking)、Seiya Mizuno、Tim Harper、Aloisia Davì (alodavi)、Arnout Engelen、Ethan Atkins、Johannes Rudolph、Krzysztof Romanowski、Allan Renucci、Brian P. Holt、Filipe Regadas、Hiroshi Ito、Martijn Hoekstra、OlegYch、Seth Tisue、natans、Aaron S. Hawley、Alex Khvatov、Alexander Samsig、Andreas Jim-Hartmann、Andrei Pozolotin、Andrey Kaygorodov、Anthony Garo、Christopher Hunt、Colin Dean、Daniel Riquelme、Deokhwan Kim、Gerard Maas、Guillaume Poirier、Heikki Vesalainen、Jason Pickens、Jonas Fonseca、Julien Jerphanion、Justin Pihony、Kazufumi Nishida、Kyle Goodale、Maksym Fedorov、Mark Canlas、Martynas Mickevičius、Michael Pollmeier、Mike Skells、Nafer Sanabria、Naohisa Murakami (tiqwab)、PanAeon、Peter Neyens、Rui Gonçalves、Sean Sullivan、Stephen Nancekivell、Veera Venky、blakkan、ortigali。ありがとうございました!