6. settings
•transformation of key-value map
セッティングは key-value マップの変換
key
value
name
helloWorld
version
0.1.0-SNAPSHOT
organization
com.example
7. settings
•transformation of key-value map
key := {
val x = otherKey.value
x + 1
}
key += { ... }
key ++= Seq(...)
セッティングは key-value マップの変換
8. scoped keys
•entry point for sbt shell
•Attributes:
–key name
–key type
–project (default "This")
–configuration (default "This")
–in-task (default "This")
–(implicitly, scalaVersion)
スコープ付けされたキー キー名、キー型、プロジェクト、コンフィギュレーション、in タスク、(scalaVersion)
9. scoped keys
•entry point for sbt shell
{url}proj-id/config:inTask::keyName
keyName in (proj, Compile, inTask) := { ... }
•in build.sbt
sbt シェルへの入り口
build.sbt での記法と異なる
10. when "This" is used
•shell will default to "This"
•default delegation rule
–project: x, ThisBuild, then Global
–configuration: in the order of ivyConfigurations, then Global
–task: no delegation
シェルで軸に指定が無い場合は This
This の委譲のルール
11. configuration
•sets of source and library dependencies
–Compile
–Test
–etc.
コンフィギュレーションはソースとライブラリ依存性の集合
14. sbt 1.0 technology previews
•adding features to 0.13.x without breaking binary compatibility
sbt 1.0 は出したいけど、API が固定化する前に入れたいものもある
15. 0.13.5/6: Auto plugins
•default features as auto plugins
•manages plugin dependencies
–triggered plugins (e.g. coffeescript on all web)
次世代プラグイン。プラグイン同士の依存性を追跡
自動的にセッティング順を計算
16. 0.13.6: HTTPS by default
•Maven Central
•Typesafe repositories
•sbt plugin repository
HTTPS がデフォルト
17. 0.13.6: Consolidated resolution
•resolution performance improvement sponsored by LinkedIn
•consolidates sub-project dependency resolution with identical dependency graph
def commonSettings = Seq( updateOptions := updateOptions.value.withConsolidatedResolution(true) ) lazy val app = (project in file("app")). settings(commonSettings: _*)
ライブラリ依存性のグラフが同一な場合に解決を一括化
18. 0.13.6: Eviction warning
•eviction
–when multiple versions are found on resolved dependencies tree, sbt selects the latest by default.
•0.13.6 guesses binary incompatible evictions
[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn] * commons-io:commons-io:1.3 -> 2.1
[warn] Run 'evicted' to see detailed eviction warnings
eviction: 同じライブラリの複数のバージョンがあった場合の「追い出し」
バイナリ互換性が無い eviction の推論
20. 0.13.6: –SNAPSHOT handling
•checks all resolvers for the latest (This could slow things down)
•sbt used to pick the first one it found
-SNAPSHOT 処理の改善
以前はキャッシュから JAR を消す必要があった
21. 0.13.x: sbt server
•better integration with IDE, vim/emacs/sublime, Jenkins, Activator, etc
•many possibilities (remote compilation, caching, inter-project communication)
IDE や他のツールとの統合 リモートコンパイルなど多くの可能性がある
22. 0.13.x: more performance updates
•cablecar: Ivy "rewrite" prototype in Scala
–https://github.com/sbt/sbt/tree/wip/cablecar
•or, enhancement on consolidated resolution (global cache, support for different graphs)
•resolution performance improvement sponsored by LinkedIn
cablecar: Ivy のライブラリ解決機能の Scala rewrite プロトタイプ 解決の一括化をさらに改善すればその方向の方が速くなるかも