You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2024/09/18 12:26:25 UTC
(maven) branch master updated: [MNG-7255] Infer groupId for intra-reactor dependencies (#1696)
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new 2f5f61a043 [MNG-7255] Infer groupId for intra-reactor dependencies (#1696)
2f5f61a043 is described below
commit 2f5f61a0433cb5d0d24b7c51c44ccdc413d93c54
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Sep 18 14:26:20 2024 +0200
[MNG-7255] Infer groupId for intra-reactor dependencies (#1696)
---
.../internal/impl/model/BuildModelTransformer.java | 30 +++++++++++++++++-----
.../DefaultModelTransformerContextBuilder.java | 18 ++++++++++---
2 files changed, 39 insertions(+), 9 deletions(-)
diff --git a/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/BuildModelTransformer.java b/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/BuildModelTransformer.java
index 69f70c222f..b879649dfe 100644
--- a/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/BuildModelTransformer.java
+++ b/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/BuildModelTransformer.java
@@ -28,6 +28,7 @@ import java.util.Optional;
import org.apache.maven.api.di.Named;
import org.apache.maven.api.di.Singleton;
import org.apache.maven.api.model.Dependency;
+import org.apache.maven.api.model.InputLocation;
import org.apache.maven.api.model.Model;
import org.apache.maven.api.model.Parent;
import org.apache.maven.api.services.ModelTransformer;
@@ -83,18 +84,35 @@ public class BuildModelTransformer implements ModelTransformer {
List<Dependency> newDeps = new ArrayList<>();
boolean modified = false;
for (Dependency dep : model.getDependencies()) {
+ Dependency.Builder depBuilder = null;
if (dep.getVersion() == null) {
Model depModel = context.getRawModel(model.getPomFile(), dep.getGroupId(), dep.getArtifactId());
if (depModel != null) {
- String v = depModel.getVersion();
- if (v == null && depModel.getParent() != null) {
- v = depModel.getParent().getVersion();
+ 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);
}
- dep = dep.withVersion(v);
- modified = true;
}
}
- newDeps.add(dep);
+ if (depBuilder != null) {
+ newDeps.add(depBuilder.build());
+ modified = true;
+ } else {
+ newDeps.add(dep);
+ }
}
if (modified) {
builder.dependencies(newDeps);
diff --git a/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelTransformerContextBuilder.java b/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelTransformerContextBuilder.java
index 08a44afcd1..76d94a6d31 100644
--- a/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelTransformerContextBuilder.java
+++ b/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelTransformerContextBuilder.java
@@ -83,7 +83,8 @@ class DefaultModelTransformerContextBuilder implements ModelTransformerContextBu
public Model getRawModel(Path from, String gId, String aId) {
Model model = findRawModel(from, gId, aId);
if (model != null) {
- context.modelByGA.put(new GAKey(gId, aId), new Holder(model));
+ String groupId = DefaultModelBuilder.getGroupId(model);
+ context.modelByGA.put(new GAKey(groupId, model.getArtifactId()), new Holder(model));
context.modelByPath.put(model.getPomFile(), new Holder(model));
}
return model;
@@ -214,8 +215,18 @@ class DefaultModelTransformerContextBuilder implements ModelTransformerContextBu
}
public ModelSource getSource(String groupId, String artifactId) {
- Set<ModelSource> sources = mappedSources.get(groupId + ":" + artifactId);
- if (sources == null) {
+ Set<ModelSource> sources;
+ if (groupId != null) {
+ sources = mappedSources.get(groupId + ":" + artifactId);
+ if (sources == null) {
+ return null;
+ }
+ } else if (artifactId != null) {
+ sources = mappedSources.get(artifactId);
+ if (sources == null) {
+ return null;
+ }
+ } else {
return null;
}
return sources.stream()
@@ -231,5 +242,6 @@ class DefaultModelTransformerContextBuilder implements ModelTransformerContextBu
mappedSources
.computeIfAbsent(groupId + ":" + artifactId, k -> new HashSet<>())
.add(source);
+ mappedSources.computeIfAbsent(artifactId, k -> new HashSet<>()).add(source);
}
}