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 b59bd41..1123e56 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
@@ -43,7 +43,9 @@
import org.apache.maven.project.MavenProject;
/**
- *
DefaultProjectDependencyAnalyzer class.
+ *
+ * DefaultProjectDependencyAnalyzer class.
+ *
*
* @author Mark Hobson
*/
@@ -69,6 +71,7 @@ public ProjectDependencyAnalysis analyze(MavenProject project, Collection> artifactClassMap = buildArtifactClassMap(project, excludedClassesPatterns);
+ Map classToArtifactMap = buildClassToArtifactMap(artifactClassMap);
Set mainDependencyClasses = new HashSet<>();
for (MainDependencyClassesProvider provider : mainDependencyClassesProviders) {
@@ -84,14 +87,14 @@ public ProjectDependencyAnalysis analyze(MavenProject project, Collection testOnlyDependencyClasses =
- buildTestOnlyDependencyClasses(mainDependencyClasses, testDependencyClasses);
+ Set testOnlyDependencyClasses = buildTestOnlyDependencyClasses(mainDependencyClasses,
+ testDependencyClasses);
- Map> usedArtifacts = buildUsedArtifacts(artifactClassMap, dependencyClasses);
- Set mainUsedArtifacts =
- buildUsedArtifacts(artifactClassMap, mainDependencyClasses).keySet();
+ Map> usedArtifacts = buildUsedArtifacts(classToArtifactMap,
+ dependencyClasses);
+ Set mainUsedArtifacts = buildUsedArtifacts(classToArtifactMap, mainDependencyClasses).keySet();
- Set testArtifacts = buildUsedArtifacts(artifactClassMap, testOnlyDependencyClasses)
+ Set testArtifacts = buildUsedArtifacts(classToArtifactMap, testOnlyDependencyClasses)
.keySet();
Set testOnlyArtifacts = removeAll(testArtifacts, mainUsedArtifacts);
@@ -105,8 +108,8 @@ public ProjectDependencyAnalysis analyze(MavenProject project, Collection> usedUndeclaredArtifactsWithClasses = new LinkedHashMap<>(usedArtifacts);
- Set usedUndeclaredArtifacts =
- removeAll(usedUndeclaredArtifactsWithClasses.keySet(), declaredArtifacts);
+ Set usedUndeclaredArtifacts = removeAll(usedUndeclaredArtifactsWithClasses.keySet(),
+ declaredArtifacts);
usedUndeclaredArtifactsWithClasses.keySet().retainAll(usedUndeclaredArtifacts);
@@ -124,7 +127,8 @@ public ProjectDependencyAnalysis analyze(MavenProject project, Collection getTestArtifactsWithNonTestScope(Set test
Set nonTestScopeArtifacts = new LinkedHashSet<>();
for (Artifact artifact : testOnlyArtifacts) {
- if (artifact.getScope().equals("compile")) {
+ if (Artifact.SCOPE_COMPILE.equals(artifact.getScope())) {
nonTestScopeArtifacts.add(artifact);
}
}
@@ -226,19 +230,14 @@ private static Set buildDeclaredArtifacts(MavenProject project) {
}
private static Map> buildUsedArtifacts(
- Map> artifactClassMap, Set dependencyClasses) {
+ Map classToArtifactMap, Set dependencyClasses) {
Map> usedArtifacts = new HashMap<>();
for (DependencyUsage classUsage : dependencyClasses) {
- Artifact artifact = findArtifactForClassName(artifactClassMap, classUsage.getDependencyClass());
+ Artifact artifact = classToArtifactMap.get(classUsage.getDependencyClass());
if (artifact != null && !includedInJDK(artifact)) {
- Set classesFromArtifact = usedArtifacts.get(artifact);
- if (classesFromArtifact == null) {
- classesFromArtifact = new HashSet<>();
- usedArtifacts.put(artifact, classesFromArtifact);
- }
- classesFromArtifact.add(classUsage);
+ usedArtifacts.computeIfAbsent(artifact, k -> new HashSet<>()).add(classUsage);
}
}
@@ -260,13 +259,16 @@ private static boolean includedInJDK(Artifact artifact) {
return false;
}
- private static Artifact findArtifactForClassName(Map> artifactClassMap, String className) {
+ private static Map buildClassToArtifactMap(Map> artifactClassMap) {
+ Map classToArtifactMap = new HashMap<>();
+
for (Map.Entry> entry : artifactClassMap.entrySet()) {
- if (entry.getValue().contains(className)) {
- return entry.getKey();
+ Artifact artifact = entry.getKey();
+ for (String className : entry.getValue()) {
+ classToArtifactMap.put(className, artifact);
}
}
- return null;
+ return classToArtifactMap;
}
}