diff --git a/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelBuilder.java b/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelBuilder.java index 4489a885d66..5b818c38d2d 100644 --- a/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelBuilder.java +++ b/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelBuilder.java @@ -564,42 +564,49 @@ public void mergeRepositories(List toAdd, boolean replace) { // Infer inner reactor dependencies version // Model transformFileToRaw(Model model) { - List newDeps = new ArrayList<>(model.getDependencies().size()); - boolean modified = false; - for (Dependency dep : model.getDependencies()) { - if (dep.getVersion() == null) { - Dependency.Builder depBuilder = null; - Model depModel = getRawModel(model.getPomFile(), dep.getGroupId(), dep.getArtifactId()); - if (depModel != null) { - String version = depModel.getVersion(); - InputLocation versionLocation = depModel.getLocation("version"); - if (version == null && depModel.getParent() != null) { - version = depModel.getParent().getVersion(); - versionLocation = depModel.getParent().getLocation("version"); - } - depBuilder = Dependency.newBuilder(dep); - depBuilder.version(version).location("version", versionLocation); - if (dep.getGroupId() == null) { - String depGroupId = depModel.getGroupId(); - InputLocation groupIdLocation = depModel.getLocation("groupId"); - if (depGroupId == null && depModel.getParent() != null) { - depGroupId = depModel.getParent().getGroupId(); - groupIdLocation = depModel.getParent().getLocation("groupId"); - } - depBuilder.groupId(depGroupId).location("groupId", groupIdLocation); - } + List deps = model.getDependencies(); + List newDeps = null; + for (int i = 0; i < deps.size(); i++) { + Dependency dep = deps.get(i); + Dependency newDep = inferDependencyVersion(model, dep); + if (newDep != null) { + if (newDeps == null) { + newDeps = new ArrayList<>(deps); } - if (depBuilder != null) { - newDeps.add(depBuilder.build()); - modified = true; - } else { - newDeps.add(dep); + newDeps.set(i, newDep); + } + } + if (newDeps != null) { + return model.withDependencies(newDeps); + } else { + return model; + } + } + + private Dependency inferDependencyVersion(Model model, Dependency dep) { + Dependency.Builder depBuilder = null; + Model depModel = getRawModel(model.getPomFile(), dep.getGroupId(), dep.getArtifactId()); + if (depModel != null) { + String version = depModel.getVersion(); + InputLocation versionLocation = depModel.getLocation("version"); + if (version == null && depModel.getParent() != null) { + version = depModel.getParent().getVersion(); + versionLocation = depModel.getParent().getLocation("version"); + } + depBuilder = Dependency.newBuilder(dep); + depBuilder.version(version).location("version", versionLocation); + if (dep.getGroupId() == null) { + String depGroupId = depModel.getGroupId(); + InputLocation groupIdLocation = depModel.getLocation("groupId"); + if (depGroupId == null && depModel.getParent() != null) { + depGroupId = depModel.getParent().getGroupId(); + groupIdLocation = depModel.getParent().getLocation("groupId"); } - } else { - newDeps.add(dep); + depBuilder.groupId(depGroupId).location("groupId", groupIdLocation); } + return depBuilder.build(); } - return modified ? model.withDependencies(newDeps) : model; + return null; } String replaceCiFriendlyVersion(Map properties, String version) {