diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2017-02-18 01:35:36 +0000 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2017-02-18 01:35:36 +0000 |
commit | a849c89dfde99076902c39f14cefb3b24f9bd5d5 (patch) | |
tree | e6c1611be8a7b4420bf2c4451d20a810b3f6bc1c /examples | |
parent | c9d6afb6f139e7dd4dbe3b1e474f4383570b5ff7 (diff) | |
download | cbt-a849c89dfde99076902c39f14cefb3b24f9bd5d5.tar.gz cbt-a849c89dfde99076902c39f14cefb3b24f9bd5d5.tar.bz2 cbt-a849c89dfde99076902c39f14cefb3b24f9bd5d5.zip |
demonstrate all the different multi-project-build and composition features
this should probably be cleaned up and made more explainatory, but seems
like at least all the cases are there
Diffstat (limited to 'examples')
11 files changed, 92 insertions, 25 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 } diff --git a/examples/multi-combined-example/build/build/build.scala b/examples/multi-combined-example/build/build/build.scala new file mode 100644 index 0000000..b87351d --- /dev/null +++ b/examples/multi-combined-example/build/build/build.scala @@ -0,0 +1,8 @@ +package cbt_build.cbt_examples.multi_combined_example.build +import cbt._ +class Build(val context: Context) extends BuildBuild{ + //println(DirectoryDependency( projectDirectory / ".." / "sub4" / "build" ).dependency.exportedClasspath) + override def dependencies: Seq[cbt.Dependency] = + super.dependencies :+ DirectoryDependency( projectDirectory / ".." / "sub4" / "build" ).dependency + def foo = DirectoryDependency( projectDirectory / ".." / "sub4" / "build" ) +} diff --git a/examples/multi-combined-example/shared/SomeSharedClass.scala b/examples/multi-combined-example/shared/SomeSharedClass.scala index d7d99e4..339d45d 100644 --- a/examples/multi-combined-example/shared/SomeSharedClass.scala +++ b/examples/multi-combined-example/shared/SomeSharedClass.scala @@ -1,4 +1,4 @@ -package cbt.examples.multi_combined +package cbt_examples.multi_combined class SomeSharedClass{ def main(args: Array[String]): Unit = { println(this.getClass.getSimpleName) diff --git a/examples/multi-combined-example/sub1/SomeConcreteClass.scala b/examples/multi-combined-example/sub1/SomeConcreteClass.scala index e55cb12..8039e13 100644 --- a/examples/multi-combined-example/sub1/SomeConcreteClass.scala +++ b/examples/multi-combined-example/sub1/SomeConcreteClass.scala @@ -1,2 +1,2 @@ -package cbt.examples.multi_combined +package cbt_examples.multi_combined object SomeConcreteClass extends SomeSharedClass diff --git a/examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala b/examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala index 399aee6..e339e24 100644 --- a/examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala +++ b/examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala @@ -1,2 +1,5 @@ -package cbt.examples.multi_combined -object SomeOtherConcreteClass extends SomeSharedClass +package cbt_examples.multi_combined +object SomeOtherConcreteClass extends SomeSharedClass{ + new cbt_examples.multi_combined_example.sub6.Sub6Example +} + diff --git a/examples/multi-combined-example/sub3/Main.scala b/examples/multi-combined-example/sub3/Main.scala new file mode 100644 index 0000000..00f8f77 --- /dev/null +++ b/examples/multi-combined-example/sub3/Main.scala @@ -0,0 +1,6 @@ +package cbt_examples.multi_combined_example.sub3 +object Main{ + def main( args: Array[String] ): Unit = { + println( Console.GREEN ++ "Hello " ++ Console.RESET + new cbt_examples.multi_combined_example.sub4.sub41.sub42.Sub4Example ) + } +} diff --git a/examples/multi-combined-example/sub4/Class4.scala b/examples/multi-combined-example/sub4/Class4.scala new file mode 100644 index 0000000..d937122 --- /dev/null +++ b/examples/multi-combined-example/sub4/Class4.scala @@ -0,0 +1,2 @@ +package cbt_examples.multi_combined_example.sub4 +class Sub4Example diff --git a/examples/multi-combined-example/sub4/build/build.scala b/examples/multi-combined-example/sub4/build/build.scala new file mode 100644 index 0000000..df5b689 --- /dev/null +++ b/examples/multi-combined-example/sub4/build/build.scala @@ -0,0 +1,13 @@ +package cbt_build.cbt_examples.multi_combined_example.sub4 +import cbt._ +class Build(val context: Context) extends BaseBuild{ + def sub41 = new Sub41(context) +} +class Sub41(val context: Context) extends BaseBuild{ + override def projectDirectory = context.workingDirectory / "sub41" + def sub42 = new Sub42(context.copy(workingDirectory=projectDirectory)) +} +class Sub42(val context: Context) extends BaseBuild{ + override def projectDirectory = context.workingDirectory / "sub42" + def hello = "Hello from Sub42" +} diff --git a/examples/multi-combined-example/sub4/sub41/sub42/Sub4Example.scala b/examples/multi-combined-example/sub4/sub41/sub42/Sub4Example.scala new file mode 100644 index 0000000..a4ea402 --- /dev/null +++ b/examples/multi-combined-example/sub4/sub41/sub42/Sub4Example.scala @@ -0,0 +1,2 @@ +package cbt_examples.multi_combined_example.sub4.sub41.sub42 +class Sub4Example diff --git a/examples/multi-combined-example/sub5/Main.scala b/examples/multi-combined-example/sub5/Main.scala new file mode 100644 index 0000000..6035cc2 --- /dev/null +++ b/examples/multi-combined-example/sub5/Main.scala @@ -0,0 +1,6 @@ +package cbt_examples.multi_combined_example.sub5 +object Main{ + def main( args: Array[String] ): Unit = { + println( Console.GREEN ++ "Hello " ++ Console.RESET ++ new cbt.examples.multi_combined_example.sub4.sub41.sub42.Sub4Example ) + } +} diff --git a/examples/multi-combined-example/sub6/Sub6Example.scala b/examples/multi-combined-example/sub6/Sub6Example.scala new file mode 100644 index 0000000..bab5993 --- /dev/null +++ b/examples/multi-combined-example/sub6/Sub6Example.scala @@ -0,0 +1,2 @@ +package cbt_examples.multi_combined_example.sub6 +class Sub6Example |