SBT Made Simple
-
Upload
fuqiang-wang -
Category
Technology
-
view
551 -
download
1
description
Transcript of SBT Made Simple
![Page 2: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/2.jpg)
Immutability
Monday, September 9, 13
![Page 3: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/3.jpg)
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](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/4.jpg)
State Transition
• Project State is volatile
• state transition is immutable
Monday, September 9, 13
![Page 5: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/5.jpg)
Composition
Monday, September 9, 13
![Page 6: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/6.jpg)
Task
• dependency model to composition model
• task composition to form bigger granularity unit
Monday, September 9, 13
![Page 7: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/7.jpg)
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](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/8.jpg)
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](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/9.jpg)
Modularity
Monday, September 9, 13
![Page 10: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/10.jpg)
Monday, September 9, 13
![Page 11: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/11.jpg)
Configuration
• Ivy concept similar to Maven’s Scope
• Predefined or custom Configurations setup Modularity boundary
Monday, September 9, 13
![Page 12: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/12.jpg)
Project
• project is another level of modularity
• multiple project build definitions have their specific configuration
Monday, September 9, 13
![Page 13: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/13.jpg)
Plugins
• SBT plugin mechanism is another modularity strategy
• enhance reusability too.
Monday, September 9, 13
![Page 14: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/14.jpg)
Consistency
One Rule To Rule Them All
Monday, September 9, 13
![Page 15: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/15.jpg)
Same Effect?
name := { “hello” + “sbt”}
sbt := { “hello” + “sbt”}
Monday, September 9, 13
![Page 16: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/16.jpg)
Not Really!
name := { “hello” + “sbt”}
sbt := { “hello” + “sbt”}
=> Setting[String]
=> Setting[Task[String]]
Monday, September 9, 13
![Page 17: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/17.jpg)
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](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/18.jpg)
Key is the key
• SettingKey[T]
• TaskKey[T]
• InputKey[T]
Monday, September 9, 13
![Page 19: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/19.jpg)
Demo Time~
Monday, September 9, 13
![Page 20: SBT Made Simple](https://reader038.fdocument.pub/reader038/viewer/2022103000/555e0df9d8b42a9e188b4d91/html5/thumbnails/20.jpg)
Monday, September 9, 13