You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gearpump.apache.org by ma...@apache.org on 2016/10/10 04:42:25 UTC

incubator-gearpump git commit: [GEARPUMP-218] add shaded library as transitive dependencies

Repository: incubator-gearpump
Updated Branches:
  refs/heads/master 66017ab7b -> 9b879456d


[GEARPUMP-218] add shaded library as transitive dependencies

Author: manuzhang <ow...@gmail.com>

Closes #92 from manuzhang/add_shaded_pom.


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

Branch: refs/heads/master
Commit: 9b879456d6ff03e961aca97857903082be189084
Parents: 66017ab
Author: manuzhang <ow...@gmail.com>
Authored: Mon Oct 10 12:42:16 2016 +0800
Committer: manuzhang <ow...@gmail.com>
Committed: Mon Oct 10 12:42:16 2016 +0800

----------------------------------------------------------------------
 project/Build.scala       |  50 +++++++++++-----
 project/BuildShaded.scala | 127 ++++++++++++++++++++++-------------------
 2 files changed, 104 insertions(+), 73 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/9b879456/project/Build.scala
----------------------------------------------------------------------
diff --git a/project/Build.scala b/project/Build.scala
index 17e78df..fe8ec61 100644
--- a/project/Build.scala
+++ b/project/Build.scala
@@ -150,12 +150,6 @@ object Build extends sbt.Build {
     )
   )
 
-  val streamingDependencies = Seq(
-    unmanagedJars in Compile ++= Seq(
-      getShadedJarFile("gs-collections", version.value)
-    )
-  )
-
   val coreDependencies = Seq(
     libraryDependencies ++= Seq(
       "org.slf4j" % "slf4j-api" % slf4jVersion,
@@ -194,9 +188,9 @@ object Build extends sbt.Build {
     ),
 
     unmanagedJars in Compile ++= Seq(
-      getShadedJarFile("metrics-graphite", version.value),
-      getShadedJarFile("guava", version.value),
-      getShadedJarFile("akka-kryo", version.value)
+      getShadedJarFile(shaded_metrics_graphite.id, version.value),
+      getShadedJarFile(shaded_guava.id, version.value),
+      getShadedJarFile(shaded_akka_kryo.id, version.value)
     )
   )
 
@@ -245,6 +239,20 @@ object Build extends sbt.Build {
       .map(_.filterNot(_.getCanonicalPath.contains("akka")))
   }
 
+  private def addShadedDeps(deps: Seq[xml.Node], node: xml.Node): xml.Node = {
+    node match {
+      case elem: xml.Elem =>
+        val child = if (elem.label == "dependencies") {
+          elem.child ++ deps
+        } else {
+          elem.child.map(addShadedDeps(deps, _))
+        }
+        xml.Elem(elem.prefix, elem.label, elem.attributes, elem.scope, false, child: _*)
+      case _ =>
+        node
+    }
+  }
+
   lazy val root = Project(
     id = "gearpump",
     base = file("."),
@@ -257,7 +265,14 @@ object Build extends sbt.Build {
   lazy val core = Project(
     id = "gearpump-core",
     base = file("core"),
-    settings = commonSettings ++ javadocSettings ++ coreDependencies)
+    settings = commonSettings ++ javadocSettings ++ coreDependencies ++ Seq(
+      pomPostProcess := {
+        (node: xml.Node) => addShadedDeps(List(
+          getShadedDepXML(organization.value, shaded_akka_kryo.id, version.value),
+          getShadedDepXML(organization.value, shaded_guava.id, version.value),
+          getShadedDepXML(organization.value, shaded_metrics_graphite.id, version.value)), node)
+      }
+    ))
       .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val daemon = Project(
@@ -277,9 +292,18 @@ object Build extends sbt.Build {
   lazy val streaming = Project(
     id = "gearpump-streaming",
     base = file("streaming"),
-    settings = commonSettings ++ javadocSettings ++ streamingDependencies)
-      .dependsOn(core % "test->test; compile->compile", daemon % "test->test")
-      .disablePlugins(sbtassembly.AssemblyPlugin)
+    settings = commonSettings ++ javadocSettings ++ Seq(
+      unmanagedJars in Compile ++= Seq(
+        getShadedJarFile(shaded_gs_collections.id, version.value)
+      ),
+
+      pomPostProcess := {
+        (node: xml.Node) => addShadedDeps(List(
+          getShadedDepXML(organization.value, shaded_gs_collections.id, version.value)), node)
+      }
+    ))
+    .dependsOn(core % "test->test; compile->compile", shaded_gs_collections, daemon % "test->test")
+    .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val external_kafka = Project(
     id = "gearpump-external-kafka",

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/9b879456/project/BuildShaded.scala
----------------------------------------------------------------------
diff --git a/project/BuildShaded.scala b/project/BuildShaded.scala
index 1f59bfd..a43587c 100644
--- a/project/BuildShaded.scala
+++ b/project/BuildShaded.scala
@@ -35,7 +35,7 @@ object BuildShaded extends sbt.Build {
       _.copy(includeScala = false)
     },
     assemblyJarName in assembly := {
-      s"${name.value}-$scalaVersionMajor-${version.value}-assembly.jar"
+      s"${name.value}_$scalaVersionMajor-${version.value}.jar"
     },
     target in assembly := baseDirectory.value.getParentFile / "target" / scalaVersionMajor
   )
@@ -44,92 +44,99 @@ object BuildShaded extends sbt.Build {
     id = "gearpump-shaded",
     base = file("shaded")
   ).aggregate(shaded_akka_kryo, shaded_gs_collections, shaded_guava, shaded_metrics_graphite)
-      .disablePlugins(sbtassembly.AssemblyPlugin)
-
+    .disablePlugins(sbtassembly.AssemblyPlugin)
 
   lazy val shaded_akka_kryo = Project(
     id = "gearpump-shaded-akka-kryo",
     base = file("shaded/akka-kryo"),
-    settings = shadeAssemblySettings ++ addArtifact(Artifact("gearpump-shaded-akka-kryo",
-      "assembly"), sbtassembly.AssemblyKeys.assembly) ++
-        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
-          )
+    settings = shadeAssemblySettings ++ addArtifact(Artifact("gearpump-shaded-akka-kryo"),
+      sbtassembly.AssemblyKeys.assembly) ++
+      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 = shadeAssemblySettings ++ addArtifact(Artifact("gearpump-shaded-gs-collections",
-      "assembly"), sbtassembly.AssemblyKeys.assembly) ++
-        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
-          )
+    settings = shadeAssemblySettings ++ addArtifact(Artifact("gearpump-shaded-gs-collections"),
+      sbtassembly.AssemblyKeys.assembly) ++
+      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 = shadeAssemblySettings ++ addArtifact(Artifact("gearpump-shaded-guava",
-      "assembly"), sbtassembly.AssemblyKeys.assembly) ++
-        Seq(
-          assemblyShadeRules in assembly := Seq(
-            ShadeRule.rename("com.google.**" -> "org.apache.gearpump.google.@1").inAll
-          )
-        ) ++
-        Seq(
-          libraryDependencies ++= Seq(
-            "com.google.guava" % "guava" % guavaVersion
-          )
+    settings = shadeAssemblySettings ++ addArtifact(Artifact("gearpump-shaded-guava"),
+      sbtassembly.AssemblyKeys.assembly) ++
+      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 = shadeAssemblySettings ++ addArtifact(Artifact("gearpump-shaded-metrics-graphite",
-      "assembly"), sbtassembly.AssemblyKeys.assembly) ++
-        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
-          )
+    settings = shadeAssemblySettings ++ addArtifact(Artifact("gearpump-shaded-metrics-graphite"),
+      sbtassembly.AssemblyKeys.assembly) ++
+      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" / scalaVersionMajor /
-      s"gearpump-shaded-$name-$scalaVersionMajor-$gearpumpVersion-assembly.jar"
+      s"${name}_$scalaVersionMajor-$gearpumpVersion.jar"
+  }
+
+  def getShadedDepXML(groupId: String, artifactId: String, version: String): scala.xml.Node = {
+    <dependency>
+      <groupId>{groupId}</groupId>
+      <artifactId>{artifactId}</artifactId>
+      <version>{version}</version>
+    </dependency>
   }
 
 }
\ No newline at end of file