aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2019-02-07 00:18:05 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2019-02-07 00:18:05 +0100
commit4a8d10e3ce8d6ad93317c6aee0fd6a87d2388f4c (patch)
treea4f715bd80683a75ea51081115780021df7d1ef8
parent660c059fb96a24739197f04f16bfa39bacbed739 (diff)
downloadKamon-4a8d10e3ce8d6ad93317c6aee0fd6a87d2388f4c.tar.gz
Kamon-4a8d10e3ce8d6ad93317c6aee0fd6a87d2388f4c.tar.bz2
Kamon-4a8d10e3ce8d6ad93317c6aee0fd6a87d2388f4c.zip
shade extra dependencies and publish the shaded jar
-rw-r--r--build.sbt38
-rw-r--r--project/plugins.sbt3
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 <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"))
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