From 4a8d10e3ce8d6ad93317c6aee0fd6a87d2388f4c Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Thu, 7 Feb 2019 00:18:05 +0100 Subject: shade extra dependencies and publish the shaded jar --- build.sbt | 38 +++++++++++++++++++++++++++++++++++--- project/plugins.sbt | 3 ++- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/build.sbt b/build.sbt index b5b06ee5..5bd86895 100644 --- a/build.sbt +++ b/build.sbt @@ -1,3 +1,6 @@ +import scala.xml.Node +import scala.xml.transform.{RewriteRule, RuleTransformer} + /* ========================================================================================= * Copyright © 2013-2018 the kamon project * @@ -42,8 +45,9 @@ val commonSettings = Seq( lazy val core = (project in file("kamon-core")) .enablePlugins(BuildInfoPlugin) - .settings(moduleName := "kamon-core") + .enablePlugins(AssemblyPlugin) .settings(commonSettings: _*) + .settings(moduleName := "kamon-core") .settings( buildInfoKeys := Seq[BuildInfoKey](version), buildInfoPackage := "kamon.status", @@ -51,10 +55,38 @@ lazy val core = (project in file("kamon-core")) "com.typesafe" % "config" % "1.3.1", "org.hdrhistogram" % "HdrHistogram" % "2.1.9", "org.jctools" % "jctools-core" % "2.1.1", - "org.nanohttpd" % "nanohttpd-nanolets" % "2.3.1", + "org.nanohttpd" % "nanohttpd" % "2.3.1", "com.grack" % "nanojson" % "1.1", "org.slf4j" % "slf4j-api" % "1.7.25" - ) + ), + assembleArtifact in assemblyPackageScala := false, + assemblyShadeRules in assembly := Seq( + ShadeRule.rename("org.HdrHistogram.**" -> "kamon.lib.@0").inAll, + ShadeRule.rename("com.grack.nanojson.**" -> "kamon.lib.@0").inAll, + ShadeRule.rename("org.jctools.**" -> "kamon.lib.@0").inAll, + ShadeRule.rename("fi.iki.elonen.**" -> "kamon.lib.@0").inAll, + ), + assemblyExcludedJars in assembly := { + val cp = (fullClasspath in assembly).value + val excludedPackages = Seq("slf4j-api","config") + cp filter { file => excludedPackages.exists(file.data.getName.startsWith(_))} + }, + packageBin in Compile := assembly.value, + assemblyJarName in assembly := s"${moduleName.value}_${scalaBinaryVersion.value}-${version.value}.jar", + pomPostProcess := { originalPom => { + val shadedGroups = Seq("org.hdrhistogram", "org.jctools", "org.nanohttpd", "com.grack") + val filterShadedDependencies = new RuleTransformer(new RewriteRule { + override def transform(n: Node): Seq[Node] = { + if(n.label == "dependency") { + val group = (n \ "groupId").text + if (shadedGroups.find(eo => eo.equalsIgnoreCase(group)).nonEmpty) Seq.empty else n + } else n + } + }) + + filterShadedDependencies(originalPom) + }} + ) lazy val testkit = (project in file("kamon-testkit")) diff --git a/project/plugins.sbt b/project/plugins.sbt index 9e8819fa..d9c70803 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,4 @@ lazy val root: Project = project in file(".") dependsOn(RootProject(uri("git://github.com/kamon-io/kamon-sbt-umbrella.git"))) -addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.9.0") \ No newline at end of file +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.9.0") +addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9") \ No newline at end of file -- cgit v1.2.3