You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by el...@apache.org on 2024/11/25 22:11:25 UTC
(maven-dependency-analyzer) branch master updated: [MSHARED-47] Don't flag xml-apis:xml-apis as undeclared (#135)
This is an automated email from the ASF dual-hosted git repository.
elharo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-dependency-analyzer.git
The following commit(s) were added to refs/heads/master by this push:
new 86c5aa2 [MSHARED-47] Don't flag xml-apis:xml-apis as undeclared (#135)
86c5aa2 is described below
commit 86c5aa2077e64eabb3afd157f108647adaf0f8ec
Author: Elliotte Rusty Harold <el...@users.noreply.github.com>
AuthorDate: Mon Nov 25 22:11:19 2024 +0000
[MSHARED-47] Don't flag xml-apis:xml-apis as undeclared (#135)
* [MSHARED-47] Don't flag xml-apis:xml-apis as undeclared
---
src/it/jarWithXmlTransitiveDependency/verify.groovy | 2 --
src/it/usedUndeclaredReference/verify.groovy | 2 --
.../analyzer/DefaultProjectDependencyAnalyzer.java | 18 +++++++++++++++++-
3 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/src/it/jarWithXmlTransitiveDependency/verify.groovy b/src/it/jarWithXmlTransitiveDependency/verify.groovy
index 4d7483a..088383c 100644
--- a/src/it/jarWithXmlTransitiveDependency/verify.groovy
+++ b/src/it/jarWithXmlTransitiveDependency/verify.groovy
@@ -24,8 +24,6 @@ UsedDeclaredArtifacts:
dom4j:dom4j:jar:1.6.1:compile
UsedUndeclaredArtifactsWithClasses:
- xml-apis:xml-apis:jar:1.0.b2:compile
- org.xml.sax.Parser
UnusedDeclaredArtifacts:
diff --git a/src/it/usedUndeclaredReference/verify.groovy b/src/it/usedUndeclaredReference/verify.groovy
index ea59292..e0bc731 100644
--- a/src/it/usedUndeclaredReference/verify.groovy
+++ b/src/it/usedUndeclaredReference/verify.groovy
@@ -23,8 +23,6 @@ def expected = '''
UsedDeclaredArtifacts:
UsedUndeclaredArtifactsWithClasses:
- xml-apis:xml-apis:jar:1.0.b2:compile
- org.apache.xmlcommons.Version
UnusedDeclaredArtifacts:
dom4j:dom4j:jar:1.6.1:compile
diff --git a/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java b/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
index f4e2274..e5f02e4 100644
--- a/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
+++ b/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
@@ -99,6 +99,7 @@ public class DefaultProjectDependencyAnalyzer implements ProjectDependencyAnalyz
Map<Artifact, Set<DependencyUsage>> usedUndeclaredArtifactsWithClasses = new LinkedHashMap<>(usedArtifacts);
Set<Artifact> usedUndeclaredArtifacts =
removeAll(usedUndeclaredArtifactsWithClasses.keySet(), declaredArtifacts);
+
usedUndeclaredArtifactsWithClasses.keySet().retainAll(usedUndeclaredArtifacts);
Set<Artifact> unusedDeclaredArtifacts = new LinkedHashSet<>(declaredArtifacts);
@@ -242,7 +243,7 @@ public class DefaultProjectDependencyAnalyzer implements ProjectDependencyAnalyz
for (DependencyUsage classUsage : dependencyClasses) {
Artifact artifact = findArtifactForClassName(artifactClassMap, classUsage.getDependencyClass());
- if (artifact != null) {
+ if (artifact != null && !includedInJDK(artifact)) {
Set<DependencyUsage> classesFromArtifact = usedArtifacts.get(artifact);
if (classesFromArtifact == null) {
classesFromArtifact = new HashSet<>();
@@ -255,6 +256,21 @@ public class DefaultProjectDependencyAnalyzer implements ProjectDependencyAnalyz
return usedArtifacts;
}
+ // MSHARED-47 an uncommon case where a commonly used
+ // third party dependency was added to the JDK
+ private static boolean includedInJDK(Artifact artifact) {
+ if ("xml-apis".equals(artifact.getGroupId())) {
+ if ("xml-apis".equals(artifact.getArtifactId())) {
+ return true;
+ }
+ } else if ("xerces".equals(artifact.getGroupId())) {
+ if ("xmlParserAPIs".equals(artifact.getArtifactId())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private static Artifact findArtifactForClassName(Map<Artifact, Set<String>> artifactClassMap, String className) {
for (Map.Entry<Artifact, Set<String>> entry : artifactClassMap.entrySet()) {
if (entry.getValue().contains(className)) {