1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.shared.dependency.analyzer.dependencyclasses;
20
21 import javax.inject.Inject;
22
23 import java.io.File;
24 import java.io.IOException;
25 import java.net.URL;
26 import java.util.Set;
27
28 import org.apache.maven.project.MavenProject;
29 import org.apache.maven.shared.dependency.analyzer.ClassesPatterns;
30 import org.apache.maven.shared.dependency.analyzer.DependencyAnalyzer;
31 import org.apache.maven.shared.dependency.analyzer.DependencyClassesProvider;
32 import org.apache.maven.shared.dependency.analyzer.DependencyUsage;
33
34 abstract class DefaultDependencyClassesProvider implements DependencyClassesProvider {
35
36
37
38
39 private final DependencyAnalyzer dependencyAnalyzer;
40
41 @Inject
42 DefaultDependencyClassesProvider(DependencyAnalyzer dependencyAnalyzer) {
43 this.dependencyAnalyzer = dependencyAnalyzer;
44 }
45
46 @Override
47 public Set<DependencyUsage> getDependencyClasses(MavenProject project, ClassesPatterns excludedClasses)
48 throws IOException {
49 String classesDirectory = getOutputClassesDirectory(project);
50 URL url = new File(classesDirectory).toURI().toURL();
51
52 return dependencyAnalyzer.analyzeUsages(url, excludedClasses);
53 }
54
55 protected abstract String getOutputClassesDirectory(MavenProject project);
56 }