Read More ... | Finding Dory (2016) HDTS x264 [Dual-Audio] [English + Hindi] - Downloadhub | Boral Kibil, Sevda Senguler Tekin - Bu Boyle (Original Mix)

Simple Build Tool Introduction

All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
 90 views
of 18

Please download to get full document.

View again

Description
1. SBT <<= (Build) { FTW } @indrajitr 2. SBTã Build tool on Scala for building Scala-Java projectsã Compliant with Mavens convention (mostly)ã Basics done…
Share
Transcript
  • 1. SBT <<= (Build) { FTW } @indrajitr
  • 2. SBT• Build tool on Scala for building Scala-Java projects• Compliant with Mavens convention (mostly)• Basics done right• Easy to set up for simple projects (intrusive)• Shares a *lot* with Scala Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 3. Build Definitions• Simple: Quick DSL• Diabolical: Scala code (with embedded DSL)• And the shell rocks Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 4. Build Definitions<base>/*.sbt<base>/project/*.scala<base>/project/plugins.sbt<base>/project/plugins/*.(scala|sbt)~/.sbt/plugins/*.(scala|sbt) Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 5. build.sbtorganization := "net.liftweb"name := "lift-demo"version := "1.0"scalaVersion := "2.9.1"libraryDependencies ++= Seq("net.liftweb" %% "lift-webkit" % "2.4-M4", "org.eclipse.jetty" % "jetty-webapp" % "7.3.0.v20110203" % "jetty") Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 6. project/build.scalaimport sbt._object LiftBuild extends Build { lazy val projects: Seq[ProjectReference] = Seq(common, actor, json) lazy val framework = Project("lift-framework", file(".")).aggregate(projects) lazy val common = Project(“lift-common”, file(“core/common”)).settings(/*...*/) lazy val actor = Project(“lift-actor”, file(“core/actor”)).dependsOn(common).settings(/*...*/) lazy val json = Project("lift-json", file("core/json")) dependsOn(common % "test") //lazy val foo = Project("lift-foo", file("core/foo"), delegates = common :: Nil)} Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 7. The ExpressionReminder:Statement ≠ Expression Statement: val foo = bar + baz Expression: bar + baz Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 8. The ExpressionThe expression:organization <<= organization or normalizedName.identityIs a: Project.Setting[S]And <<= is thus:final def <<= (app: Initialize[S]): Setting[S]for: InputKey, SettingsKey Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 9. The Emojis The ONE <<=Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 10. The Emojis And the rest := += ++= <+= <++= ~=• Initialize ( := )• Append ( += ++= <+= <++= )• Update ( ~= ) Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 11. Scoped Keyssealed trait Key[T] extends Scopedfinal class SettingKey[T] extends Key[T] with ScopedSetting[T]final class TaskKey[T] extends Key[T] with ScopedTask[T]final class InputKey[T] extends Key[InputTask[T]] with ScopedInput[T] Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 12. Examplesname := "lift-demo"name ~= formalizeresolvers in GlobalScope += JavaNet2RepositoryscalacOptions ++= Seq("-encoding", "UTF-8")resolvers <++= isSnapshot { s => if (s) Seq(ScalaToolsSnapshots) else Nil }inceptionYear <<= inceptionYear ?? Some(2011)organization <<= organization or normalizedName.identity Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 13. ExampleslibraryDependencies <<= (libraryDependencies, scalaVersion) apply { (ld, sv) =>ld :+ scalap(sv) })libraryDependencies <+= (scalaVersion)(scalap)libraryDependencies <+= scalaVersion apply scalapscalacOptions /*in GlobalScope*/ in doc <++= (name in doc, version in doc) map(Seq("-doc-title", _, "-doc-version", _)) Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 14. Settings are Scoped!def in(s: Scope): Result // ScopedSetting, ScopedTask, ScopedInputdef in(p: Reference): Resultdef in(t: Scoped): Resultdef in(c: ConfigKey): Resultdef in(c: ConfigKey, t: Scoped): Resultdef in(p: Reference, c: ConfigKey): Resultdef in(p: Reference, t: Scoped): Resultdef in(p: Reference, c: ConfigKey, t: Scoped): Resultdef in(p: ScopeAxis[Reference], c: ScopeAxis[ConfigKey], t: ScopeAxis[AttributeKey[_]]): Result Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 15. MiscellaneousMOAR Emojis (in shell)!~ + ++ ; ! < -Plugin, State, Life, Universe and everything else Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 16. Lost? Befriend ‘em• Defaults.scala• Keys.scala• IDE Bay Area Scala Enthusiasts Meeting #42 (10-10-11)
  • 17. Exercise
  • 18. Questions?
  • Related Search
    We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks