diff options
author | rockjam <5min4eq.unity@gmail.com> | 2016-06-23 20:44:40 +0300 |
---|---|---|
committer | rockjam <5min4eq.unity@gmail.com> | 2016-06-24 07:27:36 +0300 |
commit | 314df6dd5627a55f7e368f6fd62c0ad85922607a (patch) | |
tree | 422501c56b05b02b9b6729726417ef204da23ef7 /examples/uber-jar-example | |
parent | fd6c08a1fe03fee7ccb87200bf4ff4b717d42864 (diff) | |
download | cbt-314df6dd5627a55f7e368f6fd62c0ad85922607a.tar.gz cbt-314df6dd5627a55f7e368f6fd62c0ad85922607a.tar.bz2 cbt-314df6dd5627a55f7e368f6fd62c0ad85922607a.zip |
uber-jar plugin implementation
Diffstat (limited to 'examples/uber-jar-example')
-rw-r--r-- | examples/uber-jar-example/README.md | 41 | ||||
-rw-r--r-- | examples/uber-jar-example/build/build.scala | 16 | ||||
-rw-r--r-- | examples/uber-jar-example/build/build/build.scala | 5 | ||||
-rw-r--r-- | examples/uber-jar-example/src/Main.scala | 21 | ||||
-rw-r--r-- | examples/uber-jar-example/src/com/github/someguy/ImportantLib.scala | 11 |
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}")) + } + +} |