Repository: incubator-gearpump Updated Branches: refs/heads/master 66017ab7b -> 9b879456d
[GEARPUMP-218] add shaded library as transitive dependencies Author: manuzhang <[email protected]> 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 <[email protected]> Authored: Mon Oct 10 12:42:16 2016 +0800 Committer: manuzhang <[email protected]> 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
