Last active
December 19, 2015 00:59
-
-
Save pfn/5872427 to your computer and use it in GitHub Desktop.
multi-project build example: 2 common libraries, and 3 application projects. All projects are java.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sbt._ | |
import sbt.Keys._ | |
import android.Keys._ | |
object ExampleMultiBuild extends Build { | |
// define a new task | |
val release = TaskKey[Unit]("release", "build & release all release builds") | |
// setup an aggregate for 'install' and 'release' | |
// calling either will perform the install or release operation against | |
// all 3 applications | |
lazy val root = Project(id = "top", base = file(".")) settings( | |
android.Plugin.androidCommands :+ | |
(install <<= ( // install all apps | |
install in (foo, Android), | |
install in (baz, Android), | |
install in (bar, Android)) map { (_,_,_) => () }) :+ | |
(release <<= ( | |
packageRelease in (foo, Android), | |
packageRelease in (baz, Android), | |
packageRelease in (bar, Android)) map { (_,_,_) => () }): _* | |
) aggregate(core, common, foo, baz, bar) | |
// define a core library | |
lazy val core = Project( | |
id = "corelib", base = file("CoreLibrary")) settings( | |
android.Plugin.androidBuild: _*) | |
// define a common library | |
lazy val common = Project( | |
id = "commonlib", base = file("CommonLibrary")) settings( | |
commonlibSettings: _*) dependsOn(core) | |
// define the 3 end-application projects | |
lazy val foo = Project( | |
id = "foo-app", base = file("FooProject")) settings(commonSettings: _*) dependsOn(common) | |
lazy val bar = Project( | |
id = "bar", base = file("BarProject")) settings(commonSettings: _*) dependsOn(common) | |
lazy val baz = Project( | |
id = "baz", base = file("BazProject")) settings(commonSettings: _*) dependsOn(common) | |
// declare settings for commonlib | |
// 'watchSources' is modified so that .swp files don't cause resources | |
// to rebuild while viewing with vim (but not saving) | |
lazy val commonlibSettings = android.Plugin.androidBuild(core) ++ Seq( | |
watchSources ~= { _.filterNot(_.isDirectory) }, | |
javacOptions += "-Xlint:deprecation") | |
// declare common settings for the foo, bar and baz projects | |
// notice the use of androidBuild(core, common) to define the | |
// compile dependency on those projects | |
lazy val commonSettings = android.Plugin.androidBuild(core, common) ++ Seq( | |
run <<= run in Android, | |
javacOptions += "-Xlint:deprecation") | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment