diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-11-13 13:28:36 -0500 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2017-02-13 10:13:05 -0500 |
commit | 9f89d16aa3ca5f96d73a8394d5159dc78dd5d7cf (patch) | |
tree | c6181da8869bd4c4c30eb63c2efcf5d8435b4117 /examples | |
parent | b1db36baebe1f76a39e8bd1a89892465c70b69be (diff) | |
download | cbt-9f89d16aa3ca5f96d73a8394d5159dc78dd5d7cf.tar.gz cbt-9f89d16aa3ca5f96d73a8394d5159dc78dd5d7cf.tar.bz2 cbt-9f89d16aa3ca5f96d73a8394d5159dc78dd5d7cf.zip |
multi-project build example using a single build file
Diffstat (limited to 'examples')
6 files changed, 58 insertions, 0 deletions
diff --git a/examples/multi-combined-example/Readme.md b/examples/multi-combined-example/Readme.md new file mode 100644 index 0000000..01302d4 --- /dev/null +++ b/examples/multi-combined-example/Readme.md @@ -0,0 +1 @@ +This is an example how to do a multi-project build with a single build file. diff --git a/examples/multi-combined-example/build/build.scala b/examples/multi-combined-example/build/build.scala new file mode 100644 index 0000000..41c03d6 --- /dev/null +++ b/examples/multi-combined-example/build/build.scala @@ -0,0 +1,44 @@ +import cbt._ +import cbt._ +trait SharedCbtBuild extends BaseBuild{ + override def defaultScalaVersion = "2.10.6" +} + + +class Shared(val context: Context) extends SharedCbtBuild + +class Sub(val context:Context) extends SharedCbtBuild{ + override def dependencies = Seq(new Shared( + context.copy( + projectDirectory = projectDirectory ++ "/../shared" + ) + )) +} + +class Build(val context: Context) extends BaseBuild{ + /* + 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( + projectDirectory = projectDirectory ++ "/sub1" + ) + ) + def sub2 = new Sub( + context.copy( + projectDirectory = projectDirectory ++ "/sub2" + ) + ) + + def sub3 = // DON'T DO THIS, anonymous classes are currently not supported here. + new SharedCbtBuild{ + def context = Build.this.context.copy( + projectDirectory = Build.this.projectDirectory ++ "/sub3" + ) + } + + override def dependencies = Seq( sub1, sub2 ) // assembles all projects +} diff --git a/examples/multi-combined-example/shared/SomeSharedClass.scala b/examples/multi-combined-example/shared/SomeSharedClass.scala new file mode 100644 index 0000000..d7d99e4 --- /dev/null +++ b/examples/multi-combined-example/shared/SomeSharedClass.scala @@ -0,0 +1,6 @@ +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 new file mode 100644 index 0000000..e55cb12 --- /dev/null +++ b/examples/multi-combined-example/sub1/SomeConcreteClass.scala @@ -0,0 +1,2 @@ +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 new file mode 100644 index 0000000..399aee6 --- /dev/null +++ b/examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala @@ -0,0 +1,2 @@ +package cbt.examples.multi_combined +object SomeOtherConcreteClass extends SomeSharedClass diff --git a/examples/multi-standalone-example/Readme.md b/examples/multi-standalone-example/Readme.md new file mode 100644 index 0000000..be89598 --- /dev/null +++ b/examples/multi-standalone-example/Readme.md @@ -0,0 +1,3 @@ +This is an example how to build a multi-project build using CBT while keeping each project self-contained with it's own build files. + +Check the multi-combined-example for how to do it with a single build file for all builds together instead. |