aboutsummaryrefslogtreecommitdiff
path: root/examples/multi-combined-example/build/build.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/multi-combined-example/build/build.scala')
-rw-r--r--examples/multi-combined-example/build/build.scala67
1 files changed, 46 insertions, 21 deletions
diff --git a/examples/multi-combined-example/build/build.scala b/examples/multi-combined-example/build/build.scala
index 7d1ff9f..bdeacc7 100644
--- a/examples/multi-combined-example/build/build.scala
+++ b/examples/multi-combined-example/build/build.scala
@@ -1,44 +1,69 @@
+package cbt_build.cbt_examples.multi_combined_example
import cbt._
-import cbt._
-trait SharedCbtBuild extends BaseBuild{
+
+trait ScalaVersion extends BaseBuild{
override def defaultScalaVersion = "2.10.6"
}
+trait SharedBuild extends ScalaVersion{
+ override def dependencies: Seq[Dependency] = Seq( new SharedDependency(context) )
+ // Type-safe embedding of other build. Requires dependency in build/build/build.scala
+ def sub4 = new cbt_build.cbt_examples.multi_combined_example.sub4.Build(
+ // currently you'll have to provide the correct working directory for that build here
+ context.copy( workingDirectory = projectDirectory / "sub4" )
+ )
+ def sub6 = DirectoryDependency(context.workingDirectory / "sub6")
+}
-class Shared(val context: Context) extends SharedCbtBuild
+class SharedDependency(val context: Context) extends ScalaVersion{
+ override def projectDirectory = context.workingDirectory / "shared"
+}
-class Sub(val context:Context) extends SharedCbtBuild{
- override def dependencies = Seq(new Shared(
- context.copy(
- workingDirectory = projectDirectory ++ "/../shared"
- )
- ))
+class Sub1(val context: Context) extends SharedBuild{
+ override def projectDirectory = context.workingDirectory / "sub1"
}
-class Build(val context: Context) extends BaseBuild{
+class Sub2(val context: Context) extends SharedBuild{
+ override def projectDirectory = context.workingDirectory / "sub2"
+ override def dependencies = super.dependencies ++ Seq( sub6 )
+}
+
+class Sub3(val context: Context) extends SharedBuild{
+ override def projectDirectory = context.workingDirectory / "sub3"
+ override def dependencies = Seq(
+ // Embed another sub build reflectively. Convenient for simple dependencies
+ DirectoryDependency(context.workingDirectory / "sub4", "sub41", "sub42")
+ )
+}
+
+class Sub5(val context: Context) extends SharedBuild{
+ override def projectDirectory = context.workingDirectory / "sub5"
+ override def dependencies = Seq( sub4.sub41.sub42 )
+}
+
+class Build(val context: Context) extends SharedBuild{
/*
Currently each sub build nested into the main build needs to be an instance
of a top-level class taking a Context as the sole parameter, similar to the
Build class itself. This restriction may be lifted for more flexibility at
some point, see https://github.com/cvogt/cbt/issues/306
*/
- def sub1 = new Sub(
- context.copy(
- workingDirectory = projectDirectory ++ "/sub1"
- )
- )
- def sub2 = new Sub(
- context.copy(
- workingDirectory = projectDirectory ++ "/sub2"
- )
- )
+ def sub1 = new Sub1(context)
+ def sub2 = new Sub2(context)
+ def sub3 = new Sub3(context)
+ def sub5 = new Sub3(context)
+
+ def helloFromSub42 = sub4.sub41.sub42.hello
- def sub3 = // DON'T DO THIS, anonymous classes are currently not supported here.
+ /*
+ // DON'T DO THIS, anonymous classes are currently not supported here.
+ def sub3 =
new SharedCbtBuild{
def context = Build.this.context.copy(
workingDirectory = Build.this.projectDirectory ++ "/sub3"
)
}
+ */
override def dependencies = Seq( sub1, sub2 ) // assembles all projects
}