diff --git a/core/shared/src/main/scala/coursier/core/Resolution.scala b/core/shared/src/main/scala/coursier/core/Resolution.scala index 3b0d4129d..3dbc7b8b4 100644 --- a/core/shared/src/main/scala/coursier/core/Resolution.scala +++ b/core/shared/src/main/scala/coursier/core/Resolution.scala @@ -785,31 +785,42 @@ final case class Resolution( project: Project ): Set[ModuleVersion] = { - val approxProperties0 = - project.parent - .flatMap(projectCache.get) - .map(_._2.properties) - .fold(project.properties)(project.properties ++ _) + val needsParent = + project.parent.exists { par => + val parentFound = projectCache.contains(par) || errorCache.contains(par) + !parentFound + } - val approxProperties = propertiesMap(approxProperties0) ++ projectProperties(project) + if (needsParent) + project.parent.toSet + else { - val profileDependencies = - profiles( - project, - approxProperties, - osInfo, - jdkVersion, - userActivations - ).flatMap(p => p.dependencies ++ p.dependencyManagement) + val approxProperties0 = + project.parent + .flatMap(projectCache.get) + .map(_._2.properties) + .fold(project.properties)(project.properties ++ _) - val modules = withProperties( - project.dependencies ++ project.dependencyManagement ++ profileDependencies, - approxProperties - ).collect { - case ("import", dep) => dep.moduleVersion + val approxProperties = propertiesMap(approxProperties0) ++ projectProperties(project) + + val profileDependencies = + profiles( + project, + approxProperties, + osInfo, + jdkVersion, + userActivations + ).flatMap(p => p.dependencies ++ p.dependencyManagement) + + val modules = withProperties( + project.dependencies ++ project.dependencyManagement ++ profileDependencies, + approxProperties + ).collect { + case ("import", dep) => dep.moduleVersion + } + + modules.toSet } - - modules.toSet ++ project.parent } /** diff --git a/tests/shared/src/test/resources/resolutions/org.kie/kie-api/6.5.0.Final b/tests/shared/src/test/resources/resolutions/org.kie/kie-api/6.5.0.Final new file mode 100644 index 000000000..30b15922a --- /dev/null +++ b/tests/shared/src/test/resources/resolutions/org.kie/kie-api/6.5.0.Final @@ -0,0 +1,2 @@ +org.kie:kie-api:6.5.0.Final:compile +org.slf4j:slf4j-api:1.7.2:compile diff --git a/tests/shared/src/test/scala/coursier/test/CentralTests.scala b/tests/shared/src/test/scala/coursier/test/CentralTests.scala index e9ce23931..528c598bc 100644 --- a/tests/shared/src/test/scala/coursier/test/CentralTests.scala +++ b/tests/shared/src/test/scala/coursier/test/CentralTests.scala @@ -607,6 +607,14 @@ object CentralTests extends TestSuite { } } } + + 'parentBeforeImports - { + * - resolutionCheck( + Module("org.kie", "kie-api"), + "6.5.0.Final", + extraRepo = Some(MavenRepository("https://repository.jboss.org/nexus/content/repositories/public")) + ) + } } }