mirror of https://github.com/sbt/sbt.git
157 lines
4.8 KiB
ReStructuredText
157 lines
4.8 KiB
ReStructuredText
Full Configuration Example
|
|
--------------------------
|
|
|
|
Full configurations are written in Scala, so this example would be
|
|
placed as project/Build.scala, not build.sbt. The build can be split
|
|
into multiple files.
|
|
|
|
::
|
|
|
|
|
|
import sbt._
|
|
import Keys._
|
|
|
|
object BuildSettings {
|
|
val buildOrganization = "odp"
|
|
val buildVersion = "2.0.29"
|
|
val buildScalaVersion = "2.9.0-1"
|
|
|
|
val buildSettings = Seq (
|
|
organization := buildOrganization,
|
|
version := buildVersion,
|
|
scalaVersion := buildScalaVersion,
|
|
shellPrompt := ShellPrompt.buildShellPrompt
|
|
)
|
|
}
|
|
|
|
// Shell prompt which show the current project,
|
|
// git branch and build version
|
|
object ShellPrompt {
|
|
object devnull extends ProcessLogger {
|
|
def info (s: => String) {}
|
|
def error (s: => String) { }
|
|
def buffer[T] (f: => T): T = f
|
|
}
|
|
def currBranch = (
|
|
("git status -sb" lines_! devnull headOption)
|
|
getOrElse "-" stripPrefix "## "
|
|
)
|
|
|
|
val buildShellPrompt = {
|
|
(state: State) => {
|
|
val currProject = Project.extract (state).currentProject.id
|
|
"%s:%s:%s> ".format (
|
|
currProject, currBranch, BuildSettings.buildVersion
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
object Resolvers {
|
|
val sunrepo = "Sun Maven2 Repo" at "http://download.java.net/maven/2"
|
|
val sunrepoGF = "Sun GF Maven2 Repo" at "http://download.java.net/maven/glassfish"
|
|
val oraclerepo = "Oracle Maven2 Repo" at "http://download.oracle.com/maven"
|
|
|
|
val oracleResolvers = Seq (sunrepo, sunrepoGF, oraclerepo)
|
|
}
|
|
|
|
object Dependencies {
|
|
val logbackVer = "0.9.16"
|
|
val grizzlyVer = "1.9.19"
|
|
|
|
val logbackcore = "ch.qos.logback" % "logback-core" % logbackVer
|
|
val logbackclassic = "ch.qos.logback" % "logback-classic" % logbackVer
|
|
|
|
val jacksonjson = "org.codehaus.jackson" % "jackson-core-lgpl" % "1.7.2"
|
|
|
|
val grizzlyframwork = "com.sun.grizzly" % "grizzly-framework" % grizzlyVer
|
|
val grizzlyhttp = "com.sun.grizzly" % "grizzly-http" % grizzlyVer
|
|
val grizzlyrcm = "com.sun.grizzly" % "grizzly-rcm" % grizzlyVer
|
|
val grizzlyutils = "com.sun.grizzly" % "grizzly-utils" % grizzlyVer
|
|
val grizzlyportunif = "com.sun.grizzly" % "grizzly-portunif" % grizzlyVer
|
|
|
|
val sleepycat = "com.sleepycat" % "je" % "4.0.92"
|
|
|
|
val apachenet = "commons-net" % "commons-net" % "2.0"
|
|
val apachecodec = "commons-codec" % "commons-codec" % "1.4"
|
|
|
|
val scalatest = "org.scalatest" % "scalatest_2.9.0" % "1.4.1" % "test"
|
|
}
|
|
|
|
object CDAP2Build extends Build {
|
|
import Resolvers._
|
|
import Dependencies._
|
|
import BuildSettings._
|
|
|
|
// Sub-project specific dependencies
|
|
val commonDeps = Seq (
|
|
logbackcore,
|
|
logbackclassic,
|
|
jacksonjson,
|
|
scalatest
|
|
)
|
|
|
|
val serverDeps = Seq (
|
|
grizzlyframwork,
|
|
grizzlyhttp,
|
|
grizzlyrcm,
|
|
grizzlyutils,
|
|
grizzlyportunif,
|
|
sleepycat,
|
|
scalatest
|
|
)
|
|
|
|
val pricingDeps = Seq (apachenet, apachecodec, scalatest)
|
|
|
|
lazy val cdap2 = Project (
|
|
"cdap2",
|
|
file ("."),
|
|
settings = buildSettings
|
|
) aggregate (common, server, compact, pricing, pricing_service)
|
|
|
|
lazy val common = Project (
|
|
"common",
|
|
file ("cdap2-common"),
|
|
settings = buildSettings ++ Seq (libraryDependencies ++= commonDeps)
|
|
)
|
|
|
|
lazy val server = Project (
|
|
"server",
|
|
file ("cdap2-server"),
|
|
settings = buildSettings ++ Seq (resolvers := oracleResolvers,
|
|
libraryDependencies ++= serverDeps)
|
|
) dependsOn (common)
|
|
|
|
lazy val pricing = Project (
|
|
"pricing",
|
|
file ("cdap2-pricing"),
|
|
settings = buildSettings ++ Seq (libraryDependencies ++= pricingDeps)
|
|
) dependsOn (common, compact, server)
|
|
|
|
lazy val pricing_service = Project (
|
|
"pricing-service",
|
|
file ("cdap2-pricing-service"),
|
|
settings = buildSettings
|
|
) dependsOn (pricing, server)
|
|
|
|
lazy val compact = Project (
|
|
"compact",
|
|
file ("compact-hashmap"),
|
|
settings = buildSettings
|
|
)
|
|
}
|
|
|
|
External Builds
|
|
---------------
|
|
|
|
- `Mojolly Backchat Build <http://gist.github.com/1021873>`_
|
|
- `Scalaz
|
|
Build <https://github.com/scalaz/scalaz/blob/master/project/ScalazBuild.scala>`_
|
|
- Source Code Generation
|
|
- Generates Scaladoc and Scala X-Ray HTML Sources, with a unified view
|
|
of source from all sub-projects
|
|
- Builds an archive will the artifacts from all modules
|
|
- "Roll your own" approach to appending the Scala version to the module
|
|
id of dependencies to allow using snapshot releases of Scala.
|
|
|