Skip to content

Commit 64cade6

Browse files
committed
Domino looses dependency links for artifacts managed at a custom version, fix #399
1 parent ab325b5 commit 64cade6

File tree

2 files changed

+40
-8
lines changed

2 files changed

+40
-8
lines changed

domino/api/src/main/java/io/quarkus/domino/ProjectDependencyResolver.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.quarkus.domino.scm.ScmRevisionResolver;
2121
import io.quarkus.maven.dependency.ArtifactCoords;
2222
import io.quarkus.maven.dependency.ArtifactKey;
23+
import io.quarkus.maven.dependency.GACT;
2324
import java.io.IOException;
2425
import java.io.PrintStream;
2526
import java.nio.file.Files;
@@ -286,6 +287,7 @@ public static Builder builder() {
286287

287288
private Function<ArtifactCoords, List<Dependency>> artifactConstraintsProvider;
288289
private Set<ArtifactCoords> allConstraints;
290+
private Map<GACT, ArtifactCoords> allConstraintsByGa;
289291
private Set<ArtifactCoords> projectBomConstraints;
290292
private final Map<ArtifactCoords, ResolvedDependency> allDepsToBuild = new HashMap<>();
291293
private final Set<ArtifactCoords> nonManagedVisited = new HashSet<>();
@@ -625,7 +627,7 @@ private static Set<ArtifactCoords> toArtifactCoords(Collection<Dependency> deps)
625627
for (var d : deps) {
626628
result.add(toCoords(d.getArtifact()));
627629
}
628-
return result;
630+
return Collections.unmodifiableSet(result);
629631
}
630632

631633
public void resolveDependencies() {
@@ -643,6 +645,17 @@ void resolveDependenciesInternal() {
643645
enforcedConstraints.addAll(getBomConstraints(bomCoords));
644646
}
645647
allConstraints = toArtifactCoords(enforcedConstraints);
648+
allConstraintsByGa = Collections.unmodifiableMap(
649+
allConstraints.stream()
650+
.collect(
651+
HashMap::new,
652+
(m, gav) -> m.put(new GACT(
653+
gav.getGroupId(),
654+
gav.getArtifactId(),
655+
gav.getClassifier(),
656+
gav.getType()),
657+
gav),
658+
(m1, m2) -> m1.putAll(m2)));
646659
if (artifactConstraintsProvider == null) {
647660
artifactConstraintsProvider = t -> enforcedConstraints;
648661
}
@@ -997,8 +1010,7 @@ private void configureReleaseRepoDeps() {
9971010
}
9981011
for (Dependency directDep : descriptor.getDependencies()) {
9991012
final Artifact a = directDep.getArtifact();
1000-
final ArtifactDependency dirArt = artifactDeps.get(ArtifactCoords.of(a.getGroupId(), a.getArtifactId(),
1001-
a.getClassifier(), a.getExtension(), a.getVersion()));
1013+
final ArtifactDependency dirArt = artifactDeps.get(toManagedCoords(a));
10021014
if (dirArt != null) {
10031015
d.addDependency(dirArt);
10041016
}
@@ -1014,6 +1026,16 @@ private void configureReleaseRepoDeps() {
10141026
}
10151027
}
10161028

1029+
private ArtifactCoords toManagedCoords(Artifact a) {
1030+
final ArtifactCoords managed = allConstraintsByGa.get(new GACT(a.getGroupId(), a.getArtifactId(),
1031+
a.getClassifier(), a.getExtension()));
1032+
if (managed != null) {
1033+
return managed;
1034+
}
1035+
return ArtifactCoords.of(a.getGroupId(), a.getArtifactId(),
1036+
a.getClassifier(), a.getExtension(), a.getVersion());
1037+
}
1038+
10171039
private ScmRevision getRevision(ArtifactCoords coords, List<RemoteRepository> repos) {
10181040
final ScmRevision revision;
10191041
if (this.preResolvedRootArtifacts.containsKey(coords)) {
@@ -1712,4 +1734,5 @@ private static GAV toGav(ArtifactCoords coords) {
17121734
private static ArtifactCoords toCoords(Artifact a) {
17131735
return ArtifactCoords.of(a.getGroupId(), a.getArtifactId(), a.getClassifier(), a.getExtension(), a.getVersion());
17141736
}
1737+
17151738
}

domino/api/src/test/java/io/quarkus/domino/NonCorePlatformMemberDependenciesTest.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,16 @@ static void prepareRepo() {
3737
.setTag("1.0");
3838
var byteUtilsLib = byteUtilsProject.createMainModule("byte-utils");
3939

40-
var commonsIoProject = TestProject.of("org.commons.io", "1.0")
40+
var commonsIoProject10 = TestProject.of("org.commons.io", "1.0")
4141
.setRepoUrl("https://commons.org/code/io")
4242
.setTag("1.0");
43-
var commonsIoLib = commonsIoProject.createMainModule("commons-io")
43+
var commonsIoLib10 = commonsIoProject10.createMainModule("commons-io")
44+
.addDependency(byteUtilsLib);
45+
46+
var commonsIoProject09 = TestProject.of("org.commons.io", "0.9")
47+
.setRepoUrl("https://commons.org/code/io")
48+
.setTag("0.9");
49+
var commonsIoLib09 = commonsIoProject09.createMainModule("commons-io")
4450
.addDependency(byteUtilsLib);
4551

4652
var quarkusProject = TestProject.of("io.quarkus", "1.0")
@@ -52,7 +58,7 @@ static void prepareRepo() {
5258
var quarkusBuildParent = quarkusParent.addPomModule("quarkus-build-parent")
5359
.importBom(quarkusBom);
5460
var quarkusCore = quarkusBuildParent.addModule("quarkus-core")
55-
.addDependency(commonsIoLib);
61+
.addDependency(commonsIoLib09);
5662

5763
var filesLibProject = TestProject.of("org.files", "1.0")
5864
.setRepoUrl("https://files.org/code")
@@ -73,7 +79,7 @@ static void prepareRepo() {
7379
.addVersionConstraint("camel-core")
7480
.addVersionConstraint("camel-xml-lib")
7581
.addVersionConstraint(xmlLib)
76-
.addVersionConstraint(commonsIoLib);
82+
.addVersionConstraint(commonsIoLib10);
7783
var camelBuildParent = camelParent.addPomModule("camel-build-parent")
7884
.importBom(camelBom);
7985
var camelCore = camelBuildParent.addModule("camel-core")
@@ -86,7 +92,8 @@ static void prepareRepo() {
8692
.install(camelProject)
8793
.install(filesLibProject)
8894
.install(xmlLibProject)
89-
.install(commonsIoProject)
95+
.install(commonsIoProject10)
96+
.install(commonsIoProject09)
9097
.install(byteUtilsProject);
9198

9299
releaseAssertions = Map.<ScmRevision, Consumer<ReleaseRepo>> of(
@@ -101,6 +108,8 @@ static void prepareRepo() {
101108
.containsKey(ArtifactCoords.pom("io.quarkus", "quarkus-build-parent", "1.0"));
102109
assertThat(release.getArtifacts()).containsKey(ArtifactCoords.jar("io.quarkus", "quarkus-core", "1.0"));
103110
assertThat(release.getDependencies()).hasSize(1);
111+
assertThat(release.getDependencies().iterator().next().artifacts)
112+
.containsKey(ArtifactCoords.jar("org.commons.io", "commons-io", "1.0"));
104113
},
105114
ReleaseIdFactory.forScmAndTag("https://camel.org/code", "1.0"),
106115
release -> {

0 commit comments

Comments
 (0)