From 39493f78696d3ce310134fd7fd866a6a3aa949c6 Mon Sep 17 00:00:00 2001 From: andrea Date: Wed, 24 Oct 2018 16:19:28 +0100 Subject: [PATCH] adding a fatjar release (aka sbt-big) to the build --- .gitignore | 1 + build.sbt | 38 ++++++++++++++++++++++++++++++++++++++ project/plugins.sbt | 1 + 3 files changed, 40 insertions(+) diff --git a/.gitignore b/.gitignore index c77c963b0..8eb12d488 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ vscode-sbt-scala/client/server npm-debug.log *.vsix !sbt/src/server-test/completions/target +.big diff --git a/build.sbt b/build.sbt index b6dc156d9..0bcabf00a 100644 --- a/build.sbt +++ b/build.sbt @@ -3,6 +3,8 @@ import Dependencies._ import Sxr.sxr import com.typesafe.tools.mima.core._, ProblemFilters._ import local.Scripted +import scala.xml.{Node => XmlNode, NodeSeq => XmlNodeSeq, _} +import scala.xml.transform.{RewriteRule, RuleTransformer} // ThisBuild settings take lower precedence, // but can be shared across the multi projects. @@ -628,6 +630,42 @@ lazy val sbtProj = (project in file("sbt")) ) .configure(addSbtCompilerBridge) +lazy val sbtBig = (project in file(".big")) + .dependsOn(sbtProj) + .settings( + name := "sbt-big", + normalizedName := "sbt-big", + crossPaths := false, + assemblyShadeRules.in(assembly) := { + val packagesToBeShaded = Seq( + "fastparse", + "jawn", + "scalapb", + ) + packagesToBeShaded.map( prefix => { + ShadeRule.rename(s"$prefix.**" -> s"sbt.internal.$prefix.@1").inAll + }) + }, + assemblyMergeStrategy in assembly := { + case "LICENSE" | "NOTICE" => MergeStrategy.first + case x => (assemblyMergeStrategy in assembly).value(x) + }, + artifact.in(Compile, packageBin) := artifact.in(Compile, assembly).value, + assemblyOption.in(assembly) ~= { _.copy(includeScala = false) }, + addArtifact(artifact.in(Compile, packageBin), assembly), + pomPostProcess := { node => + new RuleTransformer(new RewriteRule { + override def transform(node: XmlNode): XmlNodeSeq = node match { + case e: Elem if node.label == "dependency" => + Comment( + "the dependency that was here has been absorbed via sbt-assembly" + ) + case _ => node + } + }).transform(node).head + }, + ) + lazy val sbtIgnoredProblems = { Vector( exclude[MissingClassProblem]("buildinfo.BuildInfo"), diff --git a/project/plugins.sbt b/project/plugins.sbt index 31aaa6648..fda55cf6e 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -7,3 +7,4 @@ addSbtPlugin("org.scala-sbt" % "sbt-contraband" % "0.4.1") addSbtPlugin("de.heikoseeberger" % "sbt-header" % "3.0.2") addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.8.0") addSbtPlugin("com.lightbend" % "sbt-whitesource" % "0.1.9") +addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.8")