Repository: incubator-gearpump
Updated Branches:
  refs/heads/master df4e18e4b -> 8f44c96d7


fix GEARPUMP-169, upgrade sbt-assembly and shade

Author: huafengw <[email protected]>

Closes #53 from manuzhang/assemb.


Project: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-gearpump/commit/8f44c96d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/tree/8f44c96d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/diff/8f44c96d

Branch: refs/heads/master
Commit: 8f44c96d72f41a79201ae81a714304457efd0f10
Parents: df4e18e
Author: huafengw <[email protected]>
Authored: Thu Jun 30 13:35:00 2016 +0800
Committer: manuzhang <[email protected]>
Committed: Thu Jun 30 13:35:00 2016 +0800

----------------------------------------------------------------------
 .travis.yml                                     |   2 +-
 project/Build.scala                             | 127 +++++++++---------
 project/BuildExample.scala                      |  13 +-
 project/BuildIntegrationTest.scala              |   7 +-
 project/BuildShaded.scala                       | 131 +++++++++++++++++++
 project/Pack.scala                              |   7 +-
 project/plugins.sbt                             |   2 +-
 .../kryo/KryoSerializerWrapper.java             |  43 ++++++
 shaded/gs-collections/README.md                 |   1 +
 shaded/guava/README.md                          |   1 +
 shaded/metrics-graphite/README.md               |   1 +
 11 files changed, 262 insertions(+), 73 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8f44c96d/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index ce66aa5..6e1ae7a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,7 +12,7 @@ script:
 - echo "repo" $TRAVIS_REPO_SLUG
 - set -o pipefail; skipLogs="Resolving |Compiling |Done updating|Updating 
|scoverage|coverage-report";
   if [[ $TRAVIS_PULL_REQUEST != "false" || $TRAVIS_REPO_SLUG != 
"apache/incubator-gearpump" ]];
-    then sbt -jvm-opts project/travis/jvmopts clean  scalastyle 
test:scalastyle it:scalastyle unidoc coverage +test | grep -v -E "$skipLogs";
+    then sbt -jvm-opts project/travis/jvmopts clean +assembly scalastyle 
test:scalastyle it:scalastyle unidoc coverage +test | grep -v -E "$skipLogs";
   elif [[ $TRAVIS_BRANCH == "master" ]];
     then sbt -jvm-opts project/travis/jvmopts clean +publish | grep -v -E 
"$skipLogs"; sbt -jvm-opts project/travis/jvmopts scalastyle test:scalastyle 
it:scalastyle unidoc coverage  +test  | grep -v -E "$skipLogs";
   elif [[ $TRAVIS_TAG != "" ]];

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8f44c96d/project/Build.scala
----------------------------------------------------------------------
diff --git a/project/Build.scala b/project/Build.scala
index c9f6356..524efa7 100644
--- a/project/Build.scala
+++ b/project/Build.scala
@@ -19,14 +19,14 @@
 import com.typesafe.sbt.SbtPgp.autoImport._
 import BuildExample.examples
 import BuildIntegrationTest.integration_test
+import BuildShaded._
 import de.johoop.jacoco4sbt.JacocoPlugin.jacoco
 import org.scalajs.sbtplugin.ScalaJSPlugin.autoImport._
 import sbt.Keys._
 import sbt._
 import Pack.packProject
 import org.scalajs.sbtplugin.cross.CrossProject
-import sbtassembly.Plugin.AssemblyKeys._
-import sbtassembly.Plugin._
+import sbtassembly.AssemblyPlugin.autoImport._
 import sbtunidoc.Plugin.UnidocKeys._
 import sbtunidoc.Plugin._
 import xerial.sbt.Sonatype._
@@ -36,22 +36,18 @@ object Build extends sbt.Build {
   val copySharedSourceFiles = TaskKey[Unit]("copied shared services source 
code")
 
   val akkaVersion = "2.4.3"
-  val kryoVersion = "0.3.2"
-  val clouderaVersion = "2.6.0-cdh5.4.2"
-  val clouderaHBaseVersion = "1.0.0-cdh5.4.2"
-  val codahaleVersion = "3.0.2"
+  val hadoopVersion = "2.6.0"
+  val hbaseVersion = "1.0.0"
   val commonsHttpVersion = "3.1"
   val commonsLoggingVersion = "1.1.3"
   val commonsLangVersion = "2.6"
   val commonsIOVersion = "2.4"
-  val guavaVersion = "16.0.1"
   val dataReplicationVersion = "0.7"
   val upickleVersion = "0.3.4"
   val junitVersion = "4.12"
   val kafkaVersion = "0.8.2.1"
   val stormVersion = "0.10.0"
   val slf4jVersion = "1.7.7"
-  val gsCollectionsVersion = "6.2.0"
 
   val crossScalaVersionNumbers = Seq("2.11.8")
   val scalaVersionNumber = crossScalaVersionNumbers.last
@@ -81,7 +77,6 @@ object Build extends sbt.Build {
         "bintray/non" at "http://dl.bintray.com/non/maven";,
         "cloudera" at 
"https://repository.cloudera.com/artifactory/cloudera-repos";,
         "clockfly" at "http://dl.bintray.com/clockfly/maven";,
-        "vincent" at "http://dl.bintray.com/fvunicorn/maven";,
         "clojars" at "http://clojars.org/repo";
       )
       // ,addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0-M5" cross 
CrossVersion.full)
@@ -154,22 +149,20 @@ object Build extends sbt.Build {
       "com.typesafe.akka" %% "akka-http-spray-json-experimental" % akkaVersion,
       "commons-logging" % "commons-logging" % commonsLoggingVersion,
       "com.typesafe.akka" %% "akka-distributed-data-experimental" % 
akkaVersion,
-      "org.apache.hadoop" % "hadoop-common" % clouderaVersion % "provided"
+      "org.apache.hadoop" % "hadoop-common" % hadoopVersion % "provided"
     )
   )
 
   val streamingDependencies = Seq(
-    libraryDependencies ++= Seq(
-      "org.apache.gearpump" % "gearpump-shaded-gs-collections" % 
gsCollectionsVersion
+    unmanagedJars in Compile ++= Seq(
+      getShadedJarFile("gs-collections", version.value)
     )
   )
 
   val coreDependencies = Seq(
     libraryDependencies ++= Seq(
-      "org.apache.gearpump" % "gearpump-shaded-metrics-graphite" % 
codahaleVersion,
       "org.slf4j" % "slf4j-api" % slf4jVersion,
       "org.slf4j" % "slf4j-log4j12" % slf4jVersion,
-      "org.apache.gearpump" % "gearpump-shaded-guava" % guavaVersion,
       "commons-lang" % "commons-lang" % commonsLangVersion,
       "com.google.code.findbugs" % "jsr305" % "1.3.9" % "compile",
 
@@ -192,7 +185,6 @@ object Build extends sbt.Build {
       "com.typesafe.akka" %% "akka-agent" % akkaVersion,
       "com.typesafe.akka" %% "akka-slf4j" % akkaVersion,
       "com.typesafe.akka" %% "akka-kernel" % akkaVersion,
-      "org.apache.gearpump" %% "gearpump-shaded-akka-kryo" % kryoVersion,
       "org.scala-lang" % "scala-reflect" % scalaVersionNumber,
       "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4",
       "com.typesafe.akka" %% "akka-testkit" % akkaVersion % "test",
@@ -200,6 +192,12 @@ object Build extends sbt.Build {
       "org.scalacheck" %% "scalacheck" % scalaCheckVersion % "test",
       "org.mockito" % "mockito-core" % mockitoVersion % "test",
       "junit" % "junit" % junitVersion % "test"
+    ),
+
+    unmanagedJars in Compile ++= Seq(
+      getShadedJarFile("metrics-graphite", version.value),
+      getShadedJarFile("guava", version.value),
+      getShadedJarFile("akka-kryo", version.value)
     )
   )
 
@@ -209,12 +207,12 @@ object Build extends sbt.Build {
     scalacOptions += s"-P:genjavadoc:out=${target.value}/java"
   )
 
-  val myAssemblySettings = assemblySettings ++ Seq(
+  val myAssemblySettings = Seq(
     test in assembly := {},
     assemblyOption in assembly ~= {
       _.copy(includeScala = false)
     },
-    jarName in assembly := {
+    assemblyJarName in assembly := {
       
s"${name.value.split("-").last}-${scalaBinaryVersion.value}-${version.value}-assembly.jar"
     }
   )
@@ -252,33 +250,37 @@ object Build extends sbt.Build {
     id = "gearpump",
     base = file("."),
     settings = commonSettings ++ noPublish ++ gearpumpUnidocSetting)
-    .aggregate(core, daemon, streaming, services, external_kafka, 
external_monoid,
+      .aggregate(shaded, core, daemon, streaming, services, external_kafka, 
external_monoid,
       external_serializer, examples, storm, yarn, external_hbase, packProject,
       external_hadoopfs, integration_test).settings(Defaults.itSettings: _*)
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val core = Project(
     id = "gearpump-core",
     base = file("core"),
-    settings = commonSettings ++ javadocSettings ++ coreDependencies
-  )
+    settings = commonSettings ++ javadocSettings ++ coreDependencies)
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val daemon = Project(
     id = "gearpump-daemon",
     base = file("daemon"),
-    settings = commonSettings ++ daemonDependencies
-  ) dependsOn(core % "test->test; compile->compile", cgroup % "test->test; 
compile->compile")
+    settings = commonSettings ++ daemonDependencies)
+      .dependsOn(core % "test->test; compile->compile", cgroup % "test->test; 
compile->compile")
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val cgroup = Project(
     id = "gearpump-experimental-cgroup",
     base = file("experiments/cgroup"),
-    settings = commonSettings ++ noPublish ++ daemonDependencies
-  ) dependsOn (core % "test->test; compile->compile")
+    settings = commonSettings ++ noPublish ++ daemonDependencies)
+      .dependsOn (core % "test->test; compile->compile")
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val streaming = Project(
     id = "gearpump-streaming",
     base = file("streaming"),
-    settings = commonSettings ++ javadocSettings ++ streamingDependencies
-  ) dependsOn(core % "test->test; compile->compile", daemon % "test->test")
+    settings = commonSettings ++ javadocSettings ++ streamingDependencies)
+      .dependsOn(core % "test->test; compile->compile", daemon % "test->test")
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val external_kafka = Project(
     id = "gearpump-external-kafka",
@@ -290,14 +292,15 @@ object Build extends sbt.Build {
           "com.twitter" %% "bijection-core" % bijectionVersion,
           ("org.apache.kafka" %% "kafka" % kafkaVersion classifier ("test")) % 
"test"
         )
-      )
-  ) dependsOn (streaming % "test->test; provided")
+      ))
+      .dependsOn (streaming % "test->test; provided")
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val services_full = CrossProject("gearpump-services", file("services"), 
CrossType.Full).
     settings(
       publish := {},
       publishLocal := {}
-    )
+    ).disablePlugins(sbtassembly.AssemblyPlugin)
 
   val distDashboardDirectory = 
s"${distDirectory}/target/pack/dashboard/views/scalajs"
 
@@ -387,8 +390,8 @@ object Build extends sbt.Build {
           "org.json4s" %% "json4s-jackson" % "3.2.11"
         ),
         mainClass in(Compile, packageBin) := 
Some("akka.stream.gearpump.example.Test")
-      )
-  ) dependsOn(streaming % "test->test; provided", daemon % "test->test; 
provided")
+      ))
+      .dependsOn(streaming % "test->test; provided", daemon % "test->test; 
provided")
 
   lazy val storm = Project(
     id = "gearpump-experiments-storm",
@@ -422,8 +425,9 @@ object Build extends sbt.Build {
             exclude("ring", "ring-jetty-adapter")
             exclude("ring", "ring-servlet")
         )
-      )
-  ) dependsOn (streaming % "test->test; compile->compile")
+      ))
+      .dependsOn (streaming % "test->test; compile->compile")
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val yarn = Project(
     id = "gearpump-experiments-yarn",
@@ -431,18 +435,19 @@ object Build extends sbt.Build {
     settings = commonSettings ++ noPublish ++
       Seq(
         libraryDependencies ++= Seq(
-          "org.apache.hadoop" % "hadoop-hdfs" % clouderaVersion,
-          "org.apache.hadoop" % "hadoop-common" % clouderaVersion,
-          "org.apache.hadoop" % "hadoop-yarn-api" % clouderaVersion,
-          "org.apache.hadoop" % "hadoop-yarn-client" % clouderaVersion,
-          "org.apache.hadoop" % "hadoop-yarn-common" % clouderaVersion,
+          "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion,
+          "org.apache.hadoop" % "hadoop-common" % hadoopVersion,
+          "org.apache.hadoop" % "hadoop-yarn-api" % hadoopVersion,
+          "org.apache.hadoop" % "hadoop-yarn-client" % hadoopVersion,
+          "org.apache.hadoop" % "hadoop-yarn-common" % hadoopVersion,
           "commons-httpclient" % "commons-httpclient" % commonsHttpVersion,
-          "org.apache.hadoop" % "hadoop-mapreduce-client-core" % 
clouderaVersion,
-          "org.apache.hadoop" % "hadoop-yarn-server-resourcemanager" % 
clouderaVersion % "provided",
-          "org.apache.hadoop" % "hadoop-yarn-server-nodemanager" % 
clouderaVersion % "provided"
+          "org.apache.hadoop" % "hadoop-mapreduce-client-core" % hadoopVersion,
+          "org.apache.hadoop" % "hadoop-yarn-server-resourcemanager" % 
hadoopVersion % "provided",
+          "org.apache.hadoop" % "hadoop-yarn-server-nodemanager" % 
hadoopVersion % "provided"
         )
-      )
-  ) dependsOn(services % "test->test;compile->compile", core % "provided")
+      ))
+      .dependsOn(services % "test->test;compile->compile", core % "provided")
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val external_hbase = Project(
     id = "gearpump-external-hbase",
@@ -455,12 +460,12 @@ object Build extends sbt.Build {
       ) ++
       Seq(
         libraryDependencies ++= Seq(
-          "org.apache.hadoop" % "hadoop-common" % clouderaVersion % "provided",
-          "org.apache.hadoop" % "hadoop-hdfs" % clouderaVersion % "provided",
-          "org.apache.hadoop" % "hadoop-mapreduce-client-core" % 
clouderaVersion % "provided",
+          "org.apache.hadoop" % "hadoop-common" % hadoopVersion % "provided",
+          "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion % "provided",
+          "org.apache.hadoop" % "hadoop-mapreduce-client-core" % hadoopVersion 
% "provided",
           "org.codehaus.jackson" % "jackson-core-asl" % "1.9.13" % "provided",
           "org.codehaus.jackson" % "jackson-mapper-asl" % "1.9.13" % 
"provided",
-          "org.apache.hbase" % "hbase-client" % clouderaHBaseVersion
+          "org.apache.hbase" % "hbase-client" % hbaseVersion
             exclude("com.github.stephenc.findbugs", "findbugs-annotations")
             exclude("com.google.guava", "guava")
             exclude("commons-codec", "commons-codec")
@@ -472,8 +477,8 @@ object Build extends sbt.Build {
             exclude("log4j", "log4j")
             exclude("org.apache.zookeeper", "zookeeper")
             exclude("org.codehaus.jackson", "jackson-mapper-asl"),
-          "org.apache.hbase" % "hbase-client" % clouderaHBaseVersion,
-          "org.apache.hbase" % "hbase-common" % clouderaHBaseVersion
+          "org.apache.hbase" % "hbase-client" % hbaseVersion,
+          "org.apache.hbase" % "hbase-common" % hbaseVersion
             exclude("com.github.stephenc.findbugs", "findbugs-annotations")
             exclude("com.google.guava", "guava")
             exclude("commons-codec", "commons-codec")
@@ -484,8 +489,9 @@ object Build extends sbt.Build {
             exclude("junit", "junit")
             exclude("log4j", "log4j")
         )
-      )
-  ) dependsOn (streaming % "test->test; provided")
+      ))
+      .dependsOn (streaming % "test->test; provided")
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val external_monoid = Project(
     id = "gearpump-external-monoid",
@@ -495,8 +501,9 @@ object Build extends sbt.Build {
         libraryDependencies ++= Seq(
           "com.twitter" %% "algebird-core" % algebirdVersion
         )
-      )
-  ) dependsOn (streaming % "provided")
+      ))
+      .dependsOn (streaming % "provided")
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val external_serializer = Project(
     id = "gearpump-external-serializer",
@@ -508,8 +515,9 @@ object Build extends sbt.Build {
             exclude("com.esotericsoftware.kryo", "kyro")
             exclude("com.esotericsoftware.minlog", "minlog")
         )
-      )
-  ) dependsOn (streaming % "provided")
+      ))
+      .dependsOn (streaming % "provided")
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val external_hadoopfs = Project(
     id = "gearpump-external-hadoopfs",
@@ -517,9 +525,10 @@ object Build extends sbt.Build {
     settings = commonSettings ++ javadocSettings ++
       Seq(
         libraryDependencies ++= Seq(
-          "org.apache.hadoop" % "hadoop-common" % clouderaVersion % "provided",
-          "org.apache.hadoop" % "hadoop-hdfs" % clouderaVersion % "provided"
+          "org.apache.hadoop" % "hadoop-common" % hadoopVersion % "provided",
+          "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion % "provided"
         )
-      )
-  ) dependsOn (streaming % "test->test; provided")
+      ))
+      .dependsOn (streaming % "test->test; provided")
+      .disablePlugins(sbtassembly.AssemblyPlugin)
 }

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8f44c96d/project/BuildExample.scala
----------------------------------------------------------------------
diff --git a/project/BuildExample.scala b/project/BuildExample.scala
index a4ae87b..060d18a 100644
--- a/project/BuildExample.scala
+++ b/project/BuildExample.scala
@@ -19,7 +19,7 @@
 import sbt.Keys._
 import sbt._
 import Build._
-import sbtassembly.Plugin.AssemblyKeys._
+import sbtassembly.AssemblyPlugin.autoImport._
 
 object BuildExample extends sbt.Build {
 
@@ -27,8 +27,9 @@ object BuildExample extends sbt.Build {
     id = "gearpump-examples",
     base = file("examples"),
     settings = commonSettings ++ noPublish
-  ) aggregate(wordcount, wordcountJava, complexdag, sol, fsio, examples_kafka,
-    distributedshell, stockcrawler, transport, examples_state, pagerank, 
distributeservice)
+  ).aggregate(wordcount, wordcountJava, complexdag, sol, fsio, examples_kafka,
+    distributedshell, stockcrawler, transport, examples_state, pagerank, 
distributeservice).
+    disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val wordcountJava = Project(
     id = "gearpump-examples-wordcountjava",
@@ -139,7 +140,7 @@ object BuildExample extends sbt.Build {
     settings = commonSettings ++ noPublish ++
       Seq(
         libraryDependencies ++= Seq(
-          "org.apache.hadoop" % "hadoop-common" % clouderaVersion
+          "org.apache.hadoop" % "hadoop-common" % hadoopVersion
             exclude("org.mortbay.jetty", "jetty-util")
             exclude("org.mortbay.jetty", "jetty")
             exclude("org.fusesource.leveldbjni", "leveldbjni-all")
@@ -198,7 +199,7 @@ object BuildExample extends sbt.Build {
     base = file("examples/streaming/state"),
     settings = commonSettings ++ noPublish ++ myAssemblySettings ++ Seq(
       libraryDependencies ++= Seq(
-        "org.apache.hadoop" % "hadoop-common" % clouderaVersion
+        "org.apache.hadoop" % "hadoop-common" % hadoopVersion
           exclude("org.mortbay.jetty", "jetty-util")
           exclude("org.mortbay.jetty", "jetty")
           exclude("org.fusesource.leveldbjni", "leveldbjni-all")
@@ -207,7 +208,7 @@ object BuildExample extends sbt.Build {
           exclude("commons-beanutils", "commons-beanutils")
           exclude("asm", "asm")
           exclude("org.ow2.asm", "asm"),
-        "org.apache.hadoop" % "hadoop-hdfs" % clouderaVersion
+        "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion
       ),
       mainClass in(Compile, packageBin) :=
         Some("org.apache.gearpump.streaming.examples.state.MessageCountApp"),

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8f44c96d/project/BuildIntegrationTest.scala
----------------------------------------------------------------------
diff --git a/project/BuildIntegrationTest.scala 
b/project/BuildIntegrationTest.scala
index 9ec3640..6eed7a2 100644
--- a/project/BuildIntegrationTest.scala
+++ b/project/BuildIntegrationTest.scala
@@ -19,7 +19,7 @@
 import sbt.Keys._
 import sbt._
 import Build._
-import sbtassembly.Plugin.AssemblyKeys._
+import sbtassembly.AssemblyPlugin.autoImport._
 
 object BuildIntegrationTest extends sbt.Build {
 
@@ -30,7 +30,8 @@ object BuildIntegrationTest extends sbt.Build {
     id = "gearpump-integrationtest",
     base = file("integrationtest"),
     settings = commonSettings ++ noPublish
-  ) aggregate(it_core, it_storm09, it_storm010)
+  ).aggregate(it_core, it_storm09, it_storm010).
+    disablePlugins(sbtassembly.AssemblyPlugin)
 
   val itTestFilter: String => Boolean = { name => name endsWith "Suite" }
   lazy val it_core = Project(
@@ -55,7 +56,7 @@ object BuildIntegrationTest extends sbt.Build {
       external_kafka,
       storm,
       external_serializer
-    )
+    ).disablePlugins(sbtassembly.AssemblyPlugin)
 
   // Integration test for Storm 0.9.x
   lazy val it_storm09 = Project(

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8f44c96d/project/BuildShaded.scala
----------------------------------------------------------------------
diff --git a/project/BuildShaded.scala b/project/BuildShaded.scala
new file mode 100644
index 0000000..9fdfb9e
--- /dev/null
+++ b/project/BuildShaded.scala
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import sbt.Keys._
+import sbt._
+import sbtassembly.AssemblyPlugin.autoImport._
+
+object BuildShaded extends sbt.Build {
+
+  val guavaVersion = "16.0.1"
+  val codahaleVersion = "3.0.2"
+  val kryoVersion = "0.3.2"
+  val gsCollectionsVersion = "6.2.0"
+  private val scalaVersionNumber = "2.11"
+
+  val myAssemblySettings = Seq(
+    test in assembly := {},
+    assemblyOption in assembly ~= {
+      _.copy(includeScala = false)
+    },
+    assemblyJarName in assembly := {
+      s"${name.value}-$scalaVersionNumber-${version.value}-assembly.jar"
+    },
+    target in assembly := baseDirectory.value.getParentFile / "target" / 
scalaVersionNumber
+  )
+
+  val shaded = Project(
+    id = "gearpump-shaded",
+    base = file("shaded")
+  ).aggregate(shaded_akka_kryo, shaded_gs_collections, shaded_guava, 
shaded_metrics_graphite)
+      .disablePlugins(sbtassembly.AssemblyPlugin)
+
+
+  lazy val shaded_akka_kryo = Project(
+    id = "gearpump-shaded-akka-kryo",
+    base = file("shaded/akka-kryo"),
+    settings = myAssemblySettings ++
+        Seq(
+          assemblyShadeRules in assembly := Seq(
+            ShadeRule.zap("com.google.protobuf.**").inAll,
+            ShadeRule.zap("com.typesafe.config.**").inAll,
+            ShadeRule.zap("akka.**").inAll,
+            ShadeRule.zap("org.jboss.netty.**").inAll,
+            ShadeRule.zap("net.jpountz.lz4.**").inAll,
+            ShadeRule.zap("org.uncommons.maths.**").inAll,
+            ShadeRule.rename("com.romix.**" -> 
"org.apache.gearpump.romix.@1").inAll,
+            ShadeRule.rename("com.esotericsoftware.**" ->
+                "org.apache.gearpump.esotericsoftware.@1").inAll,
+            ShadeRule.rename("org.objenesis.**" -> 
"org.apache.gearpump.objenesis.@1").inAll
+          )
+        ) ++
+        Seq(
+          libraryDependencies ++= Seq(
+            "com.github.romix.akka" %% "akka-kryo-serialization" % kryoVersion
+          )
+        )
+  )
+
+  lazy val shaded_gs_collections = Project(
+    id = "gearpump-shaded-gs-collections",
+    base = file("shaded/gs-collections"),
+    settings = myAssemblySettings ++
+        Seq(
+          assemblyShadeRules in assembly := Seq(
+            ShadeRule.rename("com.gs.collections.**" ->
+                "org.apache.gearpump.gs.collections.@1").inAll
+          )
+        ) ++
+        Seq(
+          libraryDependencies ++= Seq(
+            "com.goldmansachs" % "gs-collections" % gsCollectionsVersion
+          )
+        )
+  )
+
+  lazy val shaded_guava = Project(
+    id = "gearpump-shaded-guava",
+    base = file("shaded/guava"),
+    settings = myAssemblySettings ++
+        Seq(
+          assemblyShadeRules in assembly := Seq(
+            ShadeRule.rename("com.google.**" -> 
"org.apache.gearpump.google.@1").inAll
+          )
+        ) ++
+        Seq(
+          libraryDependencies ++= Seq(
+            "com.google.guava" % "guava" % guavaVersion
+          )
+        )
+  )
+
+  lazy val shaded_metrics_graphite = Project(
+    id = "gearpump-shaded-metrics-graphite",
+    base = file("shaded/metrics-graphite"),
+    settings = myAssemblySettings ++
+        Seq(
+          assemblyShadeRules in assembly := Seq(
+            ShadeRule.rename("com.codahale.metrics.**" ->
+                "org.apache.gearpump.codahale.metrics.@1").inAll
+          )
+        ) ++
+        Seq(
+          libraryDependencies ++= Seq(
+            "com.codahale.metrics" % "metrics-graphite" % codahaleVersion,
+            "com.codahale.metrics" % "metrics-jvm" % codahaleVersion
+          )
+        )
+  )
+
+
+  def getShadedJarFile(name: String, gearpumpVersion: String): File = {
+    shaded.base / "target" / scalaVersionNumber /
+      
s"gearpump-shaded-$name-$scalaVersionNumber-$gearpumpVersion-assembly.jar"
+  }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8f44c96d/project/Pack.scala
----------------------------------------------------------------------
diff --git a/project/Pack.scala b/project/Pack.scala
index 570610b..4efb854 100644
--- a/project/Pack.scala
+++ b/project/Pack.scala
@@ -122,8 +122,8 @@ object Pack extends sbt.Build {
         packResourceDir += (baseDirectory.value / ".." / "bin" -> "bin"),
         packResourceDir += (baseDirectory.value / ".." / "conf" -> "conf"),
         packResourceDir += (baseDirectory.value / ".." / "yarnconf" -> 
"conf/yarnconf"),
-        packResourceDir += (baseDirectory.value / ".." / "unmanagedlibs" /
-          scalaBinaryVersion.value -> "lib"),
+        packResourceDir += (baseDirectory.value / ".." / "shaded" / "target" /
+          CrossVersion.binaryScalaVersion(scalaVersion.value) -> "lib"),
         packResourceDir += (baseDirectory.value / ".." / "services" / 
"dashboard" -> "dashboard"),
         packResourceDir += (baseDirectory.value / ".." / "examples" / "target" 
/
           CrossVersion.binaryScalaVersion(scalaVersion.value) -> "examples"),
@@ -147,5 +147,6 @@ object Pack extends sbt.Build {
         packArchiveExcludes := Seq("integrationtest")
 
       )
-  ).dependsOn(core, streaming, services, yarn, storm)
+  ).dependsOn(core, streaming, services, yarn, storm).
+    disablePlugins(sbtassembly.AssemblyPlugin)
 }

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8f44c96d/project/plugins.sbt
----------------------------------------------------------------------
diff --git a/project/plugins.sbt b/project/plugins.sbt
index 100a222..dd73218 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -23,7 +23,7 @@ resolvers += Classpaths.sbtPluginReleases
 
 addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.8")
 
-addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")
 
 addSbtPlugin("io.gearpump.sbt" % "sbt-pack" % "0.7.6")
 

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8f44c96d/shaded/akka-kryo/src/main/java/org/apache/gearpump/romix/serialization/kryo/KryoSerializerWrapper.java
----------------------------------------------------------------------
diff --git 
a/shaded/akka-kryo/src/main/java/org/apache/gearpump/romix/serialization/kryo/KryoSerializerWrapper.java
 
b/shaded/akka-kryo/src/main/java/org/apache/gearpump/romix/serialization/kryo/KryoSerializerWrapper.java
new file mode 100644
index 0000000..8e413a9
--- /dev/null
+++ 
b/shaded/akka-kryo/src/main/java/org/apache/gearpump/romix/serialization/kryo/KryoSerializerWrapper.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.gearpump.romix.serialization.kryo;
+
+import com.esotericsoftware.kryo.Kryo;
+import com.romix.akka.serialization.kryo.KryoBasedSerializer;
+import com.romix.akka.serialization.kryo.KryoSerializer;
+import akka.actor.ExtendedActorSystem;
+
+public class KryoSerializerWrapper {
+  private final KryoBasedSerializer serializer;
+
+  public KryoSerializerWrapper(ExtendedActorSystem system) {
+    this.serializer = new KryoSerializer(system).serializer();
+  }
+
+  final public Kryo kryo() {
+    return serializer.kryo();
+  }
+
+  final public byte[] toBinary(Object msg) {
+    return serializer.toBinary(msg);
+  }
+
+  final public Object fromBinary(byte[] bytes) {
+    return serializer.fromBinary(bytes);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8f44c96d/shaded/gs-collections/README.md
----------------------------------------------------------------------
diff --git a/shaded/gs-collections/README.md b/shaded/gs-collections/README.md
new file mode 100644
index 0000000..1e1dab7
--- /dev/null
+++ b/shaded/gs-collections/README.md
@@ -0,0 +1 @@
+placeholder for shaded directory 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8f44c96d/shaded/guava/README.md
----------------------------------------------------------------------
diff --git a/shaded/guava/README.md b/shaded/guava/README.md
new file mode 100644
index 0000000..1e1dab7
--- /dev/null
+++ b/shaded/guava/README.md
@@ -0,0 +1 @@
+placeholder for shaded directory 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8f44c96d/shaded/metrics-graphite/README.md
----------------------------------------------------------------------
diff --git a/shaded/metrics-graphite/README.md 
b/shaded/metrics-graphite/README.md
new file mode 100644
index 0000000..1e1dab7
--- /dev/null
+++ b/shaded/metrics-graphite/README.md
@@ -0,0 +1 @@
+placeholder for shaded directory 
\ No newline at end of file

Reply via email to