mirror of https://github.com/sbt/sbt.git
Support wildcard exclusions in maven resolver
The idea here is that if a dependency contains exclude with wildcards than it is inTransitive.
This commit is contained in:
parent
4cdbafadbf
commit
cfe3b801e1
|
|
@ -0,0 +1,12 @@
|
||||||
|
[@jtgrabowski]: https://github.com/jtgrabowski
|
||||||
|
[1431]: https://github.com/sbt/sbt/issues/1431
|
||||||
|
[sbt-ivy-22]: https://github.com/sbt/ivy/pull/22
|
||||||
|
[2731]: https://github.com/sbt/sbt/pull/2731
|
||||||
|
|
||||||
|
### Fixes with compatibility implications
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- Support wildcard exclusions when using sbt-maven-resolver-plugin [#1431][1431][sbt/ivy#22][sbt-ivy-22]/[#2731][2731] by [@jtgrabowski][@jtgrabowski]
|
||||||
|
|
@ -9,7 +9,7 @@ object Dependencies {
|
||||||
lazy val scala211 = "2.11.7"
|
lazy val scala211 = "2.11.7"
|
||||||
|
|
||||||
lazy val jline = "jline" % "jline" % "2.13"
|
lazy val jline = "jline" % "jline" % "2.13"
|
||||||
lazy val ivy = "org.scala-sbt.ivy" % "ivy" % "2.3.0-sbt-2cc8d2761242b072cedb0a04cb39435c4fa24f9a"
|
lazy val ivy = "org.scala-sbt.ivy" % "ivy" % "2.3.0-sbt-2cf13e211b2cb31f0d3b317289dca70eca3362f6"
|
||||||
lazy val jsch = "com.jcraft" % "jsch" % "0.1.50" intransitive ()
|
lazy val jsch = "com.jcraft" % "jsch" % "0.1.50" intransitive ()
|
||||||
lazy val sbinary = "org.scala-tools.sbinary" %% "sbinary" % "0.4.2"
|
lazy val sbinary = "org.scala-tools.sbinary" %% "sbinary" % "0.4.2"
|
||||||
lazy val sbtSerialization = "org.scala-sbt" %% "serialization" % "0.1.2"
|
lazy val sbtSerialization = "org.scala-sbt" %% "serialization" % "0.1.2"
|
||||||
|
|
|
||||||
|
|
@ -357,11 +357,12 @@ abstract class MavenRepositoryResolver(settings: IvySettings) extends AbstractRe
|
||||||
case _ => tmp
|
case _ => tmp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
val transitive = d.getExclusions.asScala.forall(e => e.getGroupId != "*" || e.getArtifactId != "*")
|
||||||
|
|
||||||
// Note: The previous maven integration ALWAYS set force to true for dependnecies. If we do not do this, for some
|
// Note: The previous maven integration ALWAYS set force to true for dependnecies. If we do not do this, for some
|
||||||
// reason, Ivy will create dummy nodes when doing dependnecy mediation (e.g. dependencyManagement of one pom overrides version of a dependency)
|
// reason, Ivy will create dummy nodes when doing dependnecy mediation (e.g. dependencyManagement of one pom overrides version of a dependency)
|
||||||
// which was leading to "data not found" exceptions as Ivy would pick the correct IvyNode in the dependency tree but never load it with data....
|
// which was leading to "data not found" exceptions as Ivy would pick the correct IvyNode in the dependency tree but never load it with data....
|
||||||
val dd = new DefaultDependencyDescriptor(md, drid, /* force */ true, isChanging, true) {}
|
val dd = new DefaultDependencyDescriptor(md, drid, /* force */ true, isChanging, transitive) {}
|
||||||
|
|
||||||
// TODO - Configuration mappings (are we grabbing scope correctly, or should the default not always be compile?)
|
// TODO - Configuration mappings (are we grabbing scope correctly, or should the default not always be compile?)
|
||||||
val scope = Option(d.getScope).filterNot(_.isEmpty).getOrElse("compile")
|
val scope = Option(d.getScope).filterNot(_.isEmpty).getOrElse("compile")
|
||||||
|
|
@ -389,16 +390,18 @@ abstract class MavenRepositoryResolver(settings: IvySettings) extends AbstractRe
|
||||||
// TOOD - We may need to fix the configuration mappings here.
|
// TOOD - We may need to fix the configuration mappings here.
|
||||||
dd.addDependencyArtifact(optionalizedScope, depArtifact)
|
dd.addDependencyArtifact(optionalizedScope, depArtifact)
|
||||||
}
|
}
|
||||||
// Include rules and exclude rules.
|
if (dd.isTransitive) {
|
||||||
for (e <- d.getExclusions.asScala) {
|
// Include rules and exclude rules.
|
||||||
val excludedModule = new ModuleId(e.getGroupId, e.getArtifactId)
|
for (e <- d.getExclusions.asScala) {
|
||||||
for (conf <- dd.getModuleConfigurations) {
|
val excludedModule = new ModuleId(e.getGroupId, e.getArtifactId)
|
||||||
// TODO - Do we need extra attributes for this?
|
for (conf <- dd.getModuleConfigurations) {
|
||||||
dd.addExcludeRule(conf, new DefaultExcludeRule(new ArtifactId(
|
// TODO - Do we need extra attributes for this?
|
||||||
excludedModule, PatternMatcher.ANY_EXPRESSION,
|
dd.addExcludeRule(conf, new DefaultExcludeRule(new ArtifactId(
|
||||||
PatternMatcher.ANY_EXPRESSION,
|
excludedModule, PatternMatcher.ANY_EXPRESSION,
|
||||||
PatternMatcher.ANY_EXPRESSION),
|
PatternMatcher.ANY_EXPRESSION,
|
||||||
ExactPatternMatcher.INSTANCE, null))
|
PatternMatcher.ANY_EXPRESSION),
|
||||||
|
ExactPatternMatcher.INSTANCE, null))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
md.addDependency(dd)
|
md.addDependency(dd)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue