diff options
Diffstat (limited to 'build.sbt')
-rw-r--r-- | build.sbt | 38 |
1 files changed, 35 insertions, 3 deletions
@@ -1,3 +1,6 @@ +import scala.xml.Node +import scala.xml.transform.{RewriteRule, RuleTransformer} + /* ========================================================================================= * Copyright © 2013-2018 the kamon project <http://kamon.io/> * @@ -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")) |