diff --git a/build.sbt b/build.sbt index d104041ec..138c2a28a 100644 --- a/build.sbt +++ b/build.sbt @@ -12,11 +12,22 @@ lazy val scalazVersion = "7.2.8" lazy val core = crossProject .settings(commonSettings) .settings(mimaPreviousArtifactSettings) + .jvmConfigure(_ + .enablePlugins(_root_.coursier.ShadingPlugin) + ) + .jvmSettings( + shadingNamespace := "coursier.shaded", + libraryDependencies += "com.lihaoyi" %% "fastparse" % "0.4.2" % "shaded", + publish := publish.in(Shading).value, + publishLocal := publishLocal.in(Shading).value + ) + .jsSettings( + libraryDependencies += "com.lihaoyi" %%% "fastparse" % "0.4.2" + ) .settings( name := "coursier", libraryDependencies ++= Seq( - "org.scalaz" %%% "scalaz-core" % scalazVersion, - "com.lihaoyi" %%% "fastparse" % "0.4.2" + "org.scalaz" %%% "scalaz-core" % scalazVersion ), mimaBinaryIssueFilters ++= { import com.typesafe.tools.mima.core._ @@ -216,7 +227,8 @@ lazy val cli = project ProguardKeys.options in Proguard ++= Seq( "-dontwarn", "-keep class coursier.cli.Coursier {\n public static void main(java.lang.String[]);\n}", - "-keep class coursier.cli.IsolatedClassLoader {\n public java.lang.String[] getIsolationTargets();\n}" + "-keep class coursier.cli.IsolatedClassLoader {\n public java.lang.String[] getIsolationTargets();\n}", + "-adaptresourcefilenames **.properties" ), javaOptions in (Proguard, ProguardKeys.proguard) := Seq("-Xmx3172M"), artifactPath in Proguard := (ProguardKeys.proguardDirectory in Proguard).value / "coursier-standalone.jar", @@ -375,13 +387,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 cfb97f581..a896010c4 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -3,7 +3,33 @@ addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.14") 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-1") +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 + +// temporary, until sbt-shading 1.0.0-M15-3 (that will pull a fine jarjar version) +resolvers += Resolver.mavenLocal +libraryDependencies += { + + def jarjarVersion = { + val coursierJarjarVersion = "1.0.1-coursier-SNAPSHOT" + val fallbackJarjarVersion = "1.0.0" + def coursierJarjarFoundInM2 = (file(sys.props("user.home")) / s".m2/repository/org/anarres/jarjar/jarjar-core/$coursierJarjarVersion").exists() + + if (sys.env.contains("CI") || coursierJarjarFoundInM2) + coursierJarjarVersion + else { + scala.Console.err.println( + "Ad hoc jarjar version not found. Run\n" + + " git clone https://github.com/alexarchambault/jarjar.git && cd jarjar && git checkout 249c8dbb970f8 && ./gradlew install\n" + + s"to install it. Using version $fallbackJarjarVersion, that doesn't properly\n" + + "shade Scala JARs." + ) + fallbackJarjarVersion + } + } + + "org.anarres.jarjar" % "jarjar-core" % jarjarVersion +} diff --git a/project/project/plugins.sbt b/project/project/plugins.sbt index 1994c65c9..f4f811693 100644 --- a/project/project/plugins.sbt +++ b/project/project/plugins.sbt @@ -1 +1 @@ -addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.0-M15-1") +addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.0-M15-2") diff --git a/sbt.properties b/sbt.properties index d42ee8c7a..9046505f9 100644 --- a/sbt.properties +++ b/sbt.properties @@ -1,7 +1,8 @@ sbt.version=0.13.8 plugins = [ - "io.get-coursier:sbt-coursier:1.0.0-M15-1" + "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" @@ -13,4 +14,5 @@ plugins = [ dependencies = [ "org.scala-sbt:scripted-plugin:"${sbt.version} + "org.anarres.jarjar:jarjar-core:1.0.1-coursier-SNAPSHOT" ] diff --git a/scripts/travis.sh b/scripts/travis.sh index e5c083259..171079d0a 100755 --- a/scripts/travis.sh +++ b/scripts/travis.sh @@ -67,7 +67,6 @@ runSbtCoursierTests() { } runSbtShadingTests() { - setupCustomJarjar sbt ++$SCALA_VERSION sbt-coursier/publishLocal sbt-shading/scripted } @@ -144,6 +143,8 @@ publish() { # TODO Add coverage once https://github.com/scoverage/sbt-scoverage/issues/111 is fixed +setupCustomJarjar + setupCoursierBinDir downloadInstallSbtExtras diff --git a/tests/shared/src/test/resources/resolutions/io.get-coursier/coursier_2.11/1.0.0-SNAPSHOT b/tests/shared/src/test/resources/resolutions/io.get-coursier/coursier_2.11/1.0.0-SNAPSHOT index a5ddf5449..62382d50e 100644 --- a/tests/shared/src/test/resources/resolutions/io.get-coursier/coursier_2.11/1.0.0-SNAPSHOT +++ b/tests/shared/src/test/resources/resolutions/io.get-coursier/coursier_2.11/1.0.0-SNAPSHOT @@ -1,6 +1,3 @@ -com.lihaoyi:fastparse-utils_2.11:0.4.2:default -com.lihaoyi:fastparse_2.11:0.4.2:default -com.lihaoyi:sourcecode_2.11:0.1.3:default io.get-coursier:coursier_2.11:1.0.0-SNAPSHOT:compile org.jsoup:jsoup:1.10.2:default org.scala-lang:scala-library:2.11.8:default