mirror of https://github.com/apache/maven.git
[MNG-8331] Sometimes versioned dependencies disappear (#1821)
Ensure all dependencies end up in the model. Avoid work when there are no dependencies. Extract method, re-introduce optimization to return original model --- https://issues.apache.org/jira/browse/MNG-8331
This commit is contained in:
parent
f4eeca2472
commit
84ed8bea95
|
@ -564,40 +564,47 @@ public class DefaultModelBuilder implements ModelBuilder {
|
|||
// Infer inner reactor dependencies version
|
||||
//
|
||||
Model transformFileToRaw(Model model) {
|
||||
List<Dependency> newDeps = new ArrayList<>();
|
||||
boolean modified = false;
|
||||
if (model.getDependencies().isEmpty()) {
|
||||
return model;
|
||||
}
|
||||
List<Dependency> newDeps = new ArrayList<>(model.getDependencies().size());
|
||||
boolean changed = false;
|
||||
for (Dependency dep : model.getDependencies()) {
|
||||
Dependency newDep = null;
|
||||
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);
|
||||
}
|
||||
}
|
||||
if (depBuilder != null) {
|
||||
newDeps.add(depBuilder.build());
|
||||
modified = true;
|
||||
} else {
|
||||
newDeps.add(dep);
|
||||
newDep = inferDependencyVersion(model, dep);
|
||||
if (newDep != null) {
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
newDeps.add(newDep == null ? dep : newDep);
|
||||
}
|
||||
return modified ? model.withDependencies(newDeps) : model;
|
||||
return changed ? model.withDependencies(newDeps) : model;
|
||||
}
|
||||
|
||||
private Dependency inferDependencyVersion(Model model, Dependency dep) {
|
||||
Model depModel = getRawModel(model.getPomFile(), dep.getGroupId(), dep.getArtifactId());
|
||||
if (depModel == null) {
|
||||
return null;
|
||||
}
|
||||
Dependency.Builder depBuilder = Dependency.newBuilder(dep);
|
||||
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.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);
|
||||
}
|
||||
return depBuilder.build();
|
||||
}
|
||||
|
||||
String replaceCiFriendlyVersion(Map<String, String> properties, String version) {
|
||||
|
|
Loading…
Reference in New Issue