diff --git a/core/shared/src/main/scala/coursier/core/Resolution.scala b/core/shared/src/main/scala/coursier/core/Resolution.scala index 2cbdd4850..5241a3335 100644 --- a/core/shared/src/main/scala/coursier/core/Resolution.scala +++ b/core/shared/src/main/scala/coursier/core/Resolution.scala @@ -851,17 +851,27 @@ final case class Resolution( // 1.2 made from Pom.scala (TODO look at the very details?) // 1.3 & 1.4 (if only vaguely so) - val dependencies0 = addDependencies( - (project.dependencies +: profiles0.map(_.dependencies)).map(withProperties(_, approxProperties)) - ) - val dependenciesMgmt0 = addDependencies( - (project.dependencyManagement +: profiles0.map(_.dependencyManagement)).map(withProperties(_, approxProperties)) - ) val properties0 = (project.properties /: profiles0) { (acc, p) => acc ++ p.properties } + val project0 = project.copy( + properties = project.parent // belongs to 1.5 & 1.6 + .filter(projectCache.contains) + .map(projectCache(_)._2.properties) + .fold(properties0)(_ ++ properties0) + ) + + val propertiesMap0 = propertiesMap(projectProperties(project0)) + + val dependencies0 = addDependencies( + (project0.dependencies +: profiles0.map(_.dependencies)).map(withProperties(_, propertiesMap0)) + ) + val dependenciesMgmt0 = addDependencies( + (project0.dependencyManagement +: profiles0.map(_.dependencyManagement)).map(withProperties(_, propertiesMap0)) + ) + val deps0 = dependencies0 .collect { case ("import", dep) => @@ -871,7 +881,7 @@ final case class Resolution( .collect { case ("import", dep) => dep.moduleVersion } ++ - project.parent // belongs to 1.5 & 1.6 + project0.parent // belongs to 1.5 & 1.6 val deps = deps0.filter(projectCache.contains) @@ -879,35 +889,31 @@ final case class Resolution( .map(projectCache(_)._2) val depMgmt = ( - project.dependencyManagement +: ( + project0.dependencyManagement +: ( profiles0.map(_.dependencyManagement) ++ projs.map(_.dependencyManagement) ) ) - .map(withProperties(_, approxProperties)) + .map(withProperties(_, propertiesMap0)) .foldLeft(Map.empty[DepMgmt.Key, (String, Dependency)])(DepMgmt.addSeq) val depsSet = deps.toSet - project.copy( - version = substituteProps(project.version, approxProperties), + project0.copy( + version = substituteProps(project0.version, propertiesMap0), dependencies = dependencies0 .filterNot{case (config, dep) => config == "import" && depsSet(dep.moduleVersion) } ++ - project.parent // belongs to 1.5 & 1.6 + project0.parent // belongs to 1.5 & 1.6 .filter(projectCache.contains) .toSeq .flatMap(projectCache(_)._2.dependencies), dependencyManagement = depMgmt.values.toSeq .filterNot{case (config, dep) => config == "import" && depsSet(dep.moduleVersion) - }, - properties = project.parent // belongs to 1.5 & 1.6 - .filter(projectCache.contains) - .map(projectCache(_)._2.properties) - .fold(properties0)(properties0 ++ _) + } ) }