You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/05/05 18:12:11 UTC
[maven-resolver] branch master updated: [MRESOLVER-256] Dependency tree is different between DF and BF strategies when a dependency package has no indirect dependencies
This is an automated email from the ASF dual-hosted git repository.
michaelo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
The following commit(s) were added to refs/heads/master by this push:
new 2ea36519 [MRESOLVER-256] Dependency tree is different between DF and BF strategies when a dependency package has no indirect dependencies
2ea36519 is described below
commit 2ea36519a72079b9efa59c6278b15bfb01a53fb4
Author: hongbo.weihb <ho...@alibaba-inc.com>
AuthorDate: Thu May 5 15:27:18 2022 +0800
[MRESOLVER-256] Dependency tree is different between DF and BF strategies when a dependency package has no indirect dependencies
Signed-off-by: hongbo.weihb <ho...@alibaba-inc.com>
This closes #172
---
.../impl/collect/bf/BfDependencyCollector.java | 10 ++++++++-
.../impl/collect/bf/BfDependencyCollectorTest.java | 25 ++++++++++++++++++++++
.../dependencies-empty/gid_a_ver.ini | 4 ++++
.../dependencies-empty/gid_b_ver.ini | 2 ++
.../dependencies-empty/gid_c_ver.ini | 2 ++
.../dependencies-empty/gid_d_1.ini | 1 +
.../dependencies-empty/gid_d_2.ini | 2 ++
.../dependencies-empty/gid_e_ver.ini | 2 ++
.../dependencies-empty/gid_f_ver.ini | 2 ++
.../dependencies-empty/gid_g_1.ini | 2 ++
.../dependencies-empty/gid_g_2.ini | 2 ++
.../dependencies-empty/gid_h_1.ini | 1 +
.../dependencies-empty/gid_h_2.ini | 1 +
...xpectedSubtreeOnDescriptorDependenciesEmpty.txt | 8 +++++++
14 files changed, 63 insertions(+), 1 deletion(-)
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollector.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollector.java
index 4beca799..4c41d40c 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollector.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollector.java
@@ -448,9 +448,17 @@ public class BfDependencyCollector
context.getParent().getChildren().add( child );
boolean recurse = traverse && !descriptorResult.getDependencies().isEmpty();
+ DependencyProcessingContext parentContext = context.withDependency( d );
if ( recurse )
{
- doRecurse( args, context.withDependency( d ), descriptorResult, child );
+ doRecurse( args, parentContext, descriptorResult, child );
+ }
+ else if ( !args.skipper.skipResolution( child, parentContext.parents ) )
+ {
+ List<DependencyNode> parents = new ArrayList<>( parentContext.parents.size() + 1 );
+ parents.addAll( parentContext.parents );
+ parents.add( child );
+ args.skipper.cache( child, parents );
}
}
}
diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollectorTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollectorTest.java
index ea162f94..2a1dbea5 100644
--- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollectorTest.java
+++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollectorTest.java
@@ -61,6 +61,11 @@ import org.eclipse.aether.util.graph.manager.ClassicDependencyManager;
import org.eclipse.aether.util.graph.manager.DefaultDependencyManager;
import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
import org.eclipse.aether.util.graph.manager.TransitiveDependencyManager;
+import org.eclipse.aether.util.graph.transformer.ConflictResolver;
+import org.eclipse.aether.util.graph.transformer.JavaScopeDeriver;
+import org.eclipse.aether.util.graph.transformer.JavaScopeSelector;
+import org.eclipse.aether.util.graph.transformer.NearestVersionSelector;
+import org.eclipse.aether.util.graph.transformer.SimpleOptionalitySelector;
import org.eclipse.aether.util.graph.version.HighestVersionFilter;
import org.junit.Before;
import org.junit.Test;
@@ -576,6 +581,26 @@ public class BfDependencyCollectorTest
assertEquals( 1, result.getRoot().getChildren().size() );
}
+
+ @Test
+ public void testDescriptorDependenciesEmpty()
+ throws Exception
+ {
+ DependencyNode root = parser.parseResource("expectedSubtreeOnDescriptorDependenciesEmpty.txt");
+ Dependency dependency = root.getDependency();
+ CollectRequest request = new CollectRequest(dependency, Arrays.asList(repository));
+
+ collector.setArtifactDescriptorReader(newReader("dependencies-empty/"));
+
+ session.setDependencyGraphTransformer(new ConflictResolver(
+ new NearestVersionSelector(), new JavaScopeSelector(), new SimpleOptionalitySelector(),
+ new JavaScopeDeriver()
+ ));
+
+ CollectResult result = collector.collectDependencies(session, request);
+ assertEqualSubtree(root, result.getRoot());
+ }
+
static class TestDependencyManager
implements DependencyManager
{
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_a_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_a_ver.ini
new file mode 100644
index 00000000..f5c8d60e
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_a_ver.ini
@@ -0,0 +1,4 @@
+[dependencies]
+gid:b:jar:ver
+gid:c:jar:ver
+gid:e:jar:ver
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_b_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_b_ver.ini
new file mode 100644
index 00000000..4a016c05
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_b_ver.ini
@@ -0,0 +1,2 @@
+[dependencies]
+gid:d:jar:1
\ No newline at end of file
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_c_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_c_ver.ini
new file mode 100644
index 00000000..33a9d26c
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_c_ver.ini
@@ -0,0 +1,2 @@
+[dependencies]
+gid:d:jar:2
\ No newline at end of file
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_d_1.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_d_1.ini
new file mode 100644
index 00000000..05ba453a
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_d_1.ini
@@ -0,0 +1 @@
+[dependencies]
\ No newline at end of file
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_d_2.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_d_2.ini
new file mode 100644
index 00000000..39318dad
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_d_2.ini
@@ -0,0 +1,2 @@
+[dependencies]
+gid:g:jar:1
\ No newline at end of file
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_e_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_e_ver.ini
new file mode 100644
index 00000000..1753baca
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_e_ver.ini
@@ -0,0 +1,2 @@
+[dependencies]
+gid:f:jar:ver
\ No newline at end of file
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_f_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_f_ver.ini
new file mode 100644
index 00000000..a456e712
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_f_ver.ini
@@ -0,0 +1,2 @@
+[dependencies]
+gid:g:jar:2
\ No newline at end of file
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_g_1.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_g_1.ini
new file mode 100644
index 00000000..ce535a50
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_g_1.ini
@@ -0,0 +1,2 @@
+[dependencies]
+gid:h:jar:1
\ No newline at end of file
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_g_2.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_g_2.ini
new file mode 100644
index 00000000..41cd235f
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_g_2.ini
@@ -0,0 +1,2 @@
+[dependencies]
+gid:h:jar:2
\ No newline at end of file
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_h_1.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_h_1.ini
new file mode 100644
index 00000000..05ba453a
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_h_1.ini
@@ -0,0 +1 @@
+[dependencies]
\ No newline at end of file
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_h_2.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_h_2.ini
new file mode 100644
index 00000000..05ba453a
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/dependencies-empty/gid_h_2.ini
@@ -0,0 +1 @@
+[dependencies]
\ No newline at end of file
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/expectedSubtreeOnDescriptorDependenciesEmpty.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/expectedSubtreeOnDescriptorDependenciesEmpty.txt
new file mode 100644
index 00000000..889b64f8
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/expectedSubtreeOnDescriptorDependenciesEmpty.txt
@@ -0,0 +1,8 @@
+gid:a:jar:ver
++- gid:b:jar:ver compile
+| \- gid:d:jar:1 compile
++- gid:c:jar:ver compile
+\- gid:e:jar:ver compile
+| +- gid:f:jar:ver compile
+| | +- gid:g:jar:2 compile
+| | | \- gid:h:jar:2 compile
\ No newline at end of file