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:
Jaroslaw Grabowski 2016-08-26 11:35:13 +02:00 committed by Dale Wijnand
parent 4cdbafadbf
commit cfe3b801e1
4 changed files with 27 additions and 12 deletions

View File

@ -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]

View File

@ -9,7 +9,7 @@ object Dependencies {
lazy val scala211 = "2.11.7"
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 sbinary = "org.scala-tools.sbinary" %% "sbinary" % "0.4.2"
lazy val sbtSerialization = "org.scala-sbt" %% "serialization" % "0.1.2"

View File

@ -357,11 +357,12 @@ abstract class MavenRepositoryResolver(settings: IvySettings) extends AbstractRe
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
// 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....
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?)
val scope = Option(d.getScope).filterNot(_.isEmpty).getOrElse("compile")
@ -389,6 +390,7 @@ abstract class MavenRepositoryResolver(settings: IvySettings) extends AbstractRe
// TOOD - We may need to fix the configuration mappings here.
dd.addDependencyArtifact(optionalizedScope, depArtifact)
}
if (dd.isTransitive) {
// Include rules and exclude rules.
for (e <- d.getExclusions.asScala) {
val excludedModule = new ModuleId(e.getGroupId, e.getArtifactId)
@ -401,6 +403,7 @@ abstract class MavenRepositoryResolver(settings: IvySettings) extends AbstractRe
ExactPatternMatcher.INSTANCE, null))
}
}
}
md.addDependency(dd)
}
}