mirror of https://github.com/sbt/sbt.git
Merge pull request #451 from alexarchambault/topic/tweak-sbt-shading
Tweak sbt-shading
This commit is contained in:
commit
33a5b55655
23
build.sbt
23
build.sbt
|
|
@ -17,7 +17,17 @@ lazy val core = crossProject
|
|||
.enablePlugins(_root_.coursier.ShadingPlugin)
|
||||
)
|
||||
.jvmSettings(
|
||||
libraryDependencies += "com.lihaoyi" %% "fastparse" % "0.4.2" % "shaded",
|
||||
libraryDependencies ++= {
|
||||
|
||||
val extra =
|
||||
if (scalaBinaryVersion.value == "2.10")
|
||||
// directly depending on that one so that it doesn't get shaded
|
||||
Seq("org.scalamacros" %% "quasiquotes" % "2.1.0")
|
||||
else
|
||||
Nil
|
||||
|
||||
Seq("com.lihaoyi" %% "fastparse" % "0.4.2" % "shaded") ++ extra
|
||||
},
|
||||
shadingSettings
|
||||
)
|
||||
.jsSettings(
|
||||
|
|
@ -391,7 +401,7 @@ lazy val `sbt-shading` = project
|
|||
.settings(pluginSettings)
|
||||
.settings(
|
||||
resolvers += Resolver.mavenLocal,
|
||||
libraryDependencies += {
|
||||
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()
|
||||
|
||||
|
|
@ -412,7 +422,14 @@ lazy val `sbt-shading` = project
|
|||
fallback
|
||||
}
|
||||
|
||||
"org.anarres.jarjar" % "jarjar-core" % jarjarVersion % "shaded"
|
||||
Seq(
|
||||
"org.anarres.jarjar" % "jarjar-core" % jarjarVersion % "shaded",
|
||||
// dependencies of jarjar-core - directly depending on these so that they don't get shaded
|
||||
"com.google.code.findbugs" % "jsr305" % "2.0.2",
|
||||
"org.ow2.asm" % "asm-commons" % "5.0.3",
|
||||
"org.ow2.asm" % "asm-util" % "5.0.3",
|
||||
"org.slf4j" % "slf4j-api" % "1.7.12"
|
||||
)
|
||||
},
|
||||
shadingSettings
|
||||
)
|
||||
|
|
|
|||
|
|
@ -98,6 +98,11 @@ object Shading {
|
|||
)
|
||||
}
|
||||
|
||||
// Things could be split into intermediate tasks here, like
|
||||
// shadingDependencies: Seq[coursier.Dependency], dependencies whose JARs are to be shaded
|
||||
// shadingJars: Seq[java.io.File], JARs about to be shaded
|
||||
// Note that shadingDependencies is not explicitly calculated below.
|
||||
|
||||
val dependencyArtifacts = res.dependencyArtifacts
|
||||
.filter { case (_, a) => classpathTypes(a.`type`) }
|
||||
.groupBy(_._1)
|
||||
|
|
@ -115,12 +120,18 @@ object Shading {
|
|||
|
||||
val compileOnlyDeps = compileDeps.filterNot(shadedDeps)
|
||||
|
||||
log.info(s"Found ${compileDeps.size} dependencies in $baseConfig")
|
||||
log.debug(compileDeps.toVector.map(" " + _).sorted.mkString("\n"))
|
||||
log.info(s"Found ${compileOnlyDeps.size} dependencies only in $baseConfig")
|
||||
log.debug(compileOnlyDeps.toVector.map(" " + _).sorted.mkString("\n"))
|
||||
log.info(s"Found ${shadedDeps.size} dependencies in $shadedConf")
|
||||
log.debug(shadedDeps.toVector.map(" " + _).sorted.mkString("\n"))
|
||||
log.debug(
|
||||
s"Found ${compileDeps.size} dependencies in $baseConfig\n" +
|
||||
compileDeps.toVector.map(" " + _).sorted.mkString("\n")
|
||||
)
|
||||
log.debug(
|
||||
s"Found ${compileOnlyDeps.size} dependencies only in $baseConfig\n" +
|
||||
compileOnlyDeps.toVector.map(" " + _).sorted.mkString("\n")
|
||||
)
|
||||
log.debug(
|
||||
s"Found ${shadedDeps.size} dependencies in $shadedConf\n" +
|
||||
shadedDeps.toVector.map(" " + _).sorted.mkString("\n")
|
||||
)
|
||||
|
||||
def files(deps: Set[Dependency]) = res
|
||||
.subset(deps)
|
||||
|
|
@ -131,26 +142,36 @@ object Shading {
|
|||
.map(_.url)
|
||||
.flatMap(artifactFilesOrErrors0.get)
|
||||
|
||||
val compileOnlyJars = files(compileOnlyDeps)
|
||||
val shadedJars = files(shadedDeps)
|
||||
val noShadeJars = files(compileOnlyDeps)
|
||||
val allShadedConfJars = files(shadedDeps)
|
||||
|
||||
log.info(s"Found ${compileOnlyJars.length} JAR(s) only in $baseConfig")
|
||||
log.debug(compileOnlyJars.map(" " + _).sorted.mkString("\n"))
|
||||
log.info(s"Found ${shadedJars.length} JAR(s) in $shadedConf")
|
||||
log.debug(shadedJars.map(" " + _).sorted.mkString("\n"))
|
||||
log.debug(
|
||||
s"Found ${noShadeJars.length} JAR(s) only in $baseConfig\n" +
|
||||
noShadeJars.map(" " + _).sorted.mkString("\n")
|
||||
)
|
||||
log.debug(
|
||||
s"Found ${allShadedConfJars.length} JAR(s) in $shadedConf\n" +
|
||||
allShadedConfJars.map(" " + _).sorted.mkString("\n")
|
||||
)
|
||||
|
||||
val shadeJars = shadedJars.filterNot(compileOnlyJars.toSet)
|
||||
val shadeClasses = shadeJars.flatMap(Shading.jarClassNames)
|
||||
val toShadeJars = allShadedConfJars.filterNot(noShadeJars.toSet)
|
||||
|
||||
log.info(s"Will shade ${shadeClasses.length} class(es)")
|
||||
log.debug(shadeClasses.map(" " + _).sorted.mkString("\n"))
|
||||
log.info(
|
||||
s"Shading ${toShadeJars.length} JAR(s):\n" +
|
||||
toShadeJars.map(" " + _).sorted.mkString("\n")
|
||||
)
|
||||
|
||||
val toShadeClasses = toShadeJars.flatMap(jarClassNames)
|
||||
|
||||
log.info(s"Found ${toShadeClasses.length} class(es) in JAR(s) to be shaded")
|
||||
log.debug(toShadeClasses.map(" " + _).sorted.mkString("\n"))
|
||||
|
||||
val processor = new DefaultJarProcessor
|
||||
for (cls <- shadeClasses)
|
||||
for (cls <- toShadeClasses)
|
||||
processor.addClassRename(new ClassRename(cls, shadingNamespace + ".@0"))
|
||||
|
||||
val transformer = new JarTransformer(outputJar, processor)
|
||||
val cp = new ClassPath(file(sys.props("user.dir")), (baseJar +: shadeJars).toArray)
|
||||
val cp = new ClassPath(file(sys.props("user.dir")), (baseJar +: toShadeJars).toArray)
|
||||
transformer.transform(cp)
|
||||
|
||||
outputJar
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ org.webjars.npm:commoner:0.10.3:default
|
|||
org.webjars.npm:esprima-fb:15001.1.0-dev-harmony-fb:default
|
||||
org.webjars.npm:glob:4.2.1:default
|
||||
org.webjars.npm:graceful-fs:3.0.7:default
|
||||
org.webjars.npm:iconv-lite:0.4.13:default
|
||||
org.webjars.npm:iconv-lite:0.4.15:default
|
||||
org.webjars.npm:inflight:1.0.6:default
|
||||
org.webjars.npm:inherits:2.0.3:default
|
||||
org.webjars.npm:install:0.1.8:default
|
||||
|
|
|
|||
Loading…
Reference in New Issue