diff --git a/build.sbt b/build.sbt index b471e5724..eed714605 100644 --- a/build.sbt +++ b/build.sbt @@ -376,13 +376,37 @@ lazy val `sbt-coursier` = project // Don't try to compile that if you're not in 2.10 lazy val `sbt-shading` = project + .enablePlugins(_root_.coursier.ShadingPlugin) .dependsOn(`sbt-coursier`) .settings(pluginSettings) .settings( - // Warning: this version doesn't handle well class names with '$'s - // (so basically any Scala library) - // See https://github.com/shevek/jarjar/pull/4 - libraryDependencies += "org.anarres.jarjar" % "jarjar-core" % "1.0.0" + shadingNamespace := "coursier.shaded", + resolvers += Resolver.mavenLocal, + libraryDependencies += { + val coursierJarjarVersion = "1.0.1-coursier-SNAPSHOT" + def coursierJarjarFoundInM2 = (file(sys.props("user.home")) / s".m2/repository/org/anarres/jarjar/jarjar-core/$coursierJarjarVersion").exists() + + val jarjarVersion = + if (sys.env.contains("CI") || coursierJarjarFoundInM2 || !isSnapshot.value) + coursierJarjarVersion + else { + val fallback = "1.0.0" + + // streams.value.log.warn( // "a setting cannot depend on a task" + scala.Console.err.println( + s"""Warning: using jarjar $fallback, which doesn't properly shade Scala JARs (classes with '$$' aren't shaded). + |See the instructions around + |https://github.com/alexarchambault/coursier/blob/630a780487d662dd994ed1c3246895a22c00cf21/scripts/travis.sh#L40 + |to use a version fine with Scala JARs.""".stripMargin + ) + + fallback + } + + "org.anarres.jarjar" % "jarjar-core" % jarjarVersion % "shaded" + }, + publish := publish.in(Shading).value, + publishLocal := publishLocal.in(Shading).value ) lazy val `sbt-launcher` = project diff --git a/project/plugins.sbt b/project/plugins.sbt index 73ca6c7e8..64fd9a187 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -4,6 +4,7 @@ addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0") addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.4.0") addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.4.8") addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.0-M15-2") +addSbtPlugin("io.get-coursier" % "sbt-shading" % "1.0.0-M15-2") addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2") addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.13") libraryDependencies += "org.scala-sbt" % "scripted-plugin" % sbtVersion.value diff --git a/sbt.properties b/sbt.properties index 4762f5bf1..776e62b03 100644 --- a/sbt.properties +++ b/sbt.properties @@ -2,6 +2,7 @@ sbt.version=0.13.8 plugins = [ "io.get-coursier:sbt-coursier:1.0.0-M15-2" + "io.get-coursier:sbt-shading:1.0.0-M15-2" "org.xerial.sbt:sbt-pack:0.8.2" "org.scala-js:sbt-scalajs:0.6.14" "com.jsuereth:sbt-pgp:1.0.0"