aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorrockjam <5min4eq.unity@gmail.com>2016-06-23 20:44:40 +0300
committerrockjam <5min4eq.unity@gmail.com>2016-06-24 07:27:36 +0300
commit314df6dd5627a55f7e368f6fd62c0ad85922607a (patch)
tree422501c56b05b02b9b6729726417ef204da23ef7 /examples
parentfd6c08a1fe03fee7ccb87200bf4ff4b717d42864 (diff)
downloadcbt-314df6dd5627a55f7e368f6fd62c0ad85922607a.tar.gz
cbt-314df6dd5627a55f7e368f6fd62c0ad85922607a.tar.bz2
cbt-314df6dd5627a55f7e368f6fd62c0ad85922607a.zip
uber-jar plugin implementation
Diffstat (limited to 'examples')
-rw-r--r--examples/uber-jar-example/README.md41
-rw-r--r--examples/uber-jar-example/build/build.scala16
-rw-r--r--examples/uber-jar-example/build/build/build.scala5
-rw-r--r--examples/uber-jar-example/src/Main.scala21
-rw-r--r--examples/uber-jar-example/src/com/github/someguy/ImportantLib.scala11
5 files changed, 94 insertions, 0 deletions
diff --git a/examples/uber-jar-example/README.md b/examples/uber-jar-example/README.md
new file mode 100644
index 0000000..2460084
--- /dev/null
+++ b/examples/uber-jar-example/README.md
@@ -0,0 +1,41 @@
+### Uber-jar plugin example
+
+This example shows how to build uber jar(aka fat jar) with `UberJar` plugin.
+
+In order to create uber jar: execute `cbt uberJar`. Produced jar will be in target folder.
+
+By default, jar name is your `cbt projectName`, you can provide other name via overriding `uberJarName` task.
+
+By default, main class is `Main`. You can provide custom main class via overriding `uberJarMainClass` task.
+
+To run your main class you can execute `java -jar your-jar-name.jar`.
+
+You can also run scala REPL with your jar classpath and classes with this command: `scala -cp your-jar-name.jar`.
+
+In scala REPL you will have access to all your project classes and dependencies.
+
+```
+scala -cp uber-jar-example-0.0.1.jar
+Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_72).
+Type in expressions for evaluation. Or try :help.
+
+scala> import com.github.someguy.ImportantLib
+import com.github.someguy.ImportantLib
+
+scala> ImportantLib.add(1,2)
+res0: Int = 3
+
+scala> ImportantLib.currentDirectory
+Current directory is: /Users/rockjam/projects/cbt/examples/uber-jar-example/target
+
+scala> Main.main(Array.empty)
+fooo
+Current directory is: /Users/rockjam/projects/cbt/examples/uber-jar-example/target
+not empty list
+
+scala> import shapeless._
+import shapeless._
+
+scala> 1 :: "String" :: 3 :: HNil
+res3: shapeless.::[Int,shapeless.::[String,shapeless.::[Int,shapeless.HNil]]] = 1 :: String :: 3 :: HNil
+```
diff --git a/examples/uber-jar-example/build/build.scala b/examples/uber-jar-example/build/build.scala
new file mode 100644
index 0000000..fca7737
--- /dev/null
+++ b/examples/uber-jar-example/build/build.scala
@@ -0,0 +1,16 @@
+import cbt._
+
+class Build(val context: Context) extends BuildBuild with UberJar {
+
+ override def projectName: String = "uber-jar-example"
+
+ override def dependencies = super.dependencies ++
+ Resolver( mavenCentral ).bind(
+ ScalaDependency("com.chuusai", "shapeless", "2.3.1"),
+ ScalaDependency("com.lihaoyi", "fansi", "0.1.3"),
+ ScalaDependency("org.typelevel", "cats", "0.6.0")
+ )
+
+ override def uberJarName = projectName + "-0.0.1"
+
+}
diff --git a/examples/uber-jar-example/build/build/build.scala b/examples/uber-jar-example/build/build/build.scala
new file mode 100644
index 0000000..2938ffd
--- /dev/null
+++ b/examples/uber-jar-example/build/build/build.scala
@@ -0,0 +1,5 @@
+import cbt._
+
+class Build(val context: Context) extends BuildBuild {
+ override def dependencies = super.dependencies :+ plugins.uberJar
+}
diff --git a/examples/uber-jar-example/src/Main.scala b/examples/uber-jar-example/src/Main.scala
new file mode 100644
index 0000000..f60634f
--- /dev/null
+++ b/examples/uber-jar-example/src/Main.scala
@@ -0,0 +1,21 @@
+import scala.concurrent.{ Await, Future }
+import scala.concurrent.duration._
+
+import com.github.someguy.ImportantLib
+
+object Main extends App {
+ println("fooo")
+ val futureRes = Await.result(Future.successful(1), 5.seconds)
+
+ ImportantLib.currentDirectory()
+
+ val hlist = {
+ import shapeless._
+ 1 :: "string" :: 3 :: HNil
+ }
+
+ List(1, 2, 4, 5, 6) match {
+ case h :: _ ⇒ println("not empty list")
+ case Nil ⇒ println("empty list")
+ }
+}
diff --git a/examples/uber-jar-example/src/com/github/someguy/ImportantLib.scala b/examples/uber-jar-example/src/com/github/someguy/ImportantLib.scala
new file mode 100644
index 0000000..34baf2f
--- /dev/null
+++ b/examples/uber-jar-example/src/com/github/someguy/ImportantLib.scala
@@ -0,0 +1,11 @@
+package com.github.someguy
+
+import java.nio.file.Paths
+
+object ImportantLib {
+ def add(a: Int, b: Int): Int = a + b
+ def currentDirectory() = {
+ println(fansi.Color.Green(s"Current directory is: ${Paths.get("").toAbsolutePath}"))
+ }
+
+}