mirror of https://github.com/sbt/sbt.git
Fix for sbt/sbt#1933
sbt was reporting warning abouts inconsistent versions of dependencies even if these dependencies didn't have the same configuration (as in `provided` vs `compile`). This commit fixes this problem by comparing the dependencies by organization, artifact name and configuration. Fixes sbt/sbt#1933
This commit is contained in:
parent
33478132c5
commit
541bd4a6a4
|
|
@ -536,14 +536,18 @@ private[sbt] object IvySbt {
|
|||
{
|
||||
import IvyRetrieve.toModuleID
|
||||
val dds = moduleID.getDependencies
|
||||
inconsistentDuplicateWarning(dds map { dd => toModuleID(dd.getDependencyRevisionId) })
|
||||
val deps = dds flatMap { dd =>
|
||||
val module = toModuleID(dd.getDependencyRevisionId)
|
||||
dd.getModuleConfigurations map (c => module.copy(configurations = Some(c)))
|
||||
}
|
||||
inconsistentDuplicateWarning(deps)
|
||||
}
|
||||
|
||||
def inconsistentDuplicateWarning(dependencies: Seq[ModuleID]): List[String] =
|
||||
{
|
||||
val warningHeader = "Multiple dependencies with the same organization/name but different versions. To avoid conflict, pick one version:"
|
||||
val out: mutable.ListBuffer[String] = mutable.ListBuffer()
|
||||
(dependencies groupBy { dep => (dep.organization, dep.name) }) foreach {
|
||||
(dependencies groupBy { dep => (dep.organization, dep.name, dep.configurations) }) foreach {
|
||||
case (k, vs) if vs.size > 1 =>
|
||||
val v0 = vs.head
|
||||
(vs find { _.revision != v0.revision }) foreach { v =>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ class InconsistentDuplicateSpec extends Specification {
|
|||
|
||||
Duplicate with different version should
|
||||
be warned $warn1
|
||||
not be warned if in different configurations $nodupe2
|
||||
|
||||
Duplicate with same version should
|
||||
not be warned $nodupe1
|
||||
|
|
@ -25,4 +26,8 @@ class InconsistentDuplicateSpec extends Specification {
|
|||
|
||||
def nodupe1 =
|
||||
IvySbt.inconsistentDuplicateWarning(Seq(akkaActor230Test, akkaActor230)) must_== Nil
|
||||
|
||||
def nodupe2 =
|
||||
IvySbt.inconsistentDuplicateWarning(Seq(akkaActor214, akkaActor230Test)) must_== Nil
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue