sbt made simple

20
SBT Made Simple @囚千任 - http://afoo.me Monday, September 9, 13

Upload: fuqiang-wang

Post on 21-May-2015

557 views

Category:

Technology


1 download

DESCRIPTION

If you think SBT is complex, then you should read this. SBT is really simple as long as you get to know it.

TRANSCRIPT

Page 1: SBT Made Simple

SBT Made Simple@囚千任 - http://afoo.me

Monday, September 9, 13

Page 2: SBT Made Simple

Immutability

Monday, September 9, 13

Page 3: SBT Made Simple

Setting

• A Build File is just a sequence of Settings

• A Setting is just a transformation to key-value pairs

• A Transformation to some key-value pair is immutable

Monday, September 9, 13

Page 4: SBT Made Simple

State Transition

• Project State is volatile

• state transition is immutable

Monday, September 9, 13

Page 5: SBT Made Simple

Composition

Monday, September 9, 13

Page 6: SBT Made Simple

Task

• dependency model to composition model

• task composition to form bigger granularity unit

Monday, September 9, 13

Page 7: SBT Made Simple

InputTask

• Task with input

• input validation and completion support with parser

• parser combinator is a form of composition

Monday, September 9, 13

Page 8: SBT Made Simple

Command

• Special InputTask

• accept Project state and settings as input

• project state is driven by a composition of command execution

Monday, September 9, 13

Page 9: SBT Made Simple

Modularity

Monday, September 9, 13

Page 10: SBT Made Simple

Monday, September 9, 13

Page 11: SBT Made Simple

Configuration

• Ivy concept similar to Maven’s Scope

• Predefined or custom Configurations setup Modularity boundary

Monday, September 9, 13

Page 12: SBT Made Simple

Project

• project is another level of modularity

• multiple project build definitions have their specific configuration

Monday, September 9, 13

Page 13: SBT Made Simple

Plugins

• SBT plugin mechanism is another modularity strategy

• enhance reusability too.

Monday, September 9, 13

Page 14: SBT Made Simple

Consistency

One Rule To Rule Them All

Monday, September 9, 13

Page 15: SBT Made Simple

Same Effect?

name := { “hello” + “sbt”}

sbt := { “hello” + “sbt”}

Monday, September 9, 13

Page 16: SBT Made Simple

Not Really!

name := { “hello” + “sbt”}

sbt := { “hello” + “sbt”}

=> Setting[String]

=> Setting[Task[String]]

Monday, September 9, 13

Page 17: SBT Made Simple

Key is the keyval name = settingKey[String](“desc.”)name := { “hello” + “sbt”}

val sbt = taskKey[String](“task desc”)sbt := { “hello” + “sbt”}

=> Setting[String]

=> Setting[Task[String]]

Monday, September 9, 13

Page 18: SBT Made Simple

Key is the key

• SettingKey[T]

• TaskKey[T]

• InputKey[T]

Monday, September 9, 13

Page 19: SBT Made Simple

Demo Time~

Monday, September 9, 13

Page 20: SBT Made Simple

Monday, September 9, 13