1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.lifecycle.internal;
20
21 import java.util.Arrays;
22 import java.util.Collection;
23 import java.util.Collections;
24 import java.util.TreeSet;
25
26 import org.apache.maven.project.MavenProject;
27
28
29
30
31
32
33
34
35
36
37
38
39 public class DependencyContext {
40
41 private static final Collection<?> UNRESOLVED = Arrays.asList();
42
43 private final MavenProject project;
44
45 private final Collection<String> scopesToCollectForCurrentProject;
46
47 private final Collection<String> scopesToResolveForCurrentProject;
48
49 private final Collection<String> scopesToCollectForAggregatedProjects;
50
51 private final Collection<String> scopesToResolveForAggregatedProjects;
52
53 private volatile Collection<?> lastDependencyArtifacts = UNRESOLVED;
54
55 private volatile int lastDependencyArtifactCount = -1;
56
57 public DependencyContext(
58 MavenProject project, Collection<String> scopesToCollect, Collection<String> scopesToResolve) {
59 this.project = project;
60 scopesToCollectForCurrentProject = scopesToCollect;
61 scopesToResolveForCurrentProject = scopesToResolve;
62 scopesToCollectForAggregatedProjects = Collections.synchronizedSet(new TreeSet<>());
63 scopesToResolveForAggregatedProjects = Collections.synchronizedSet(new TreeSet<>());
64 }
65
66 public MavenProject getProject() {
67 return project;
68 }
69
70 public Collection<String> getScopesToCollectForCurrentProject() {
71 return scopesToCollectForCurrentProject;
72 }
73
74 public Collection<String> getScopesToResolveForCurrentProject() {
75 return scopesToResolveForCurrentProject;
76 }
77
78 public Collection<String> getScopesToCollectForAggregatedProjects() {
79 return scopesToCollectForAggregatedProjects;
80 }
81
82 public Collection<String> getScopesToResolveForAggregatedProjects() {
83 return scopesToResolveForAggregatedProjects;
84 }
85
86 public boolean isResolutionRequiredForCurrentProject() {
87 return lastDependencyArtifacts != project.getDependencyArtifacts()
88 || (lastDependencyArtifacts != null && lastDependencyArtifactCount != lastDependencyArtifacts.size());
89 }
90
91 public boolean isResolutionRequiredForAggregatedProjects(
92 Collection<String> scopesToCollect, Collection<String> scopesToResolve) {
93 return scopesToCollectForAggregatedProjects.addAll(scopesToCollect)
94 || scopesToResolveForAggregatedProjects.addAll(scopesToResolve);
95 }
96
97 public void synchronizeWithProjectState() {
98 lastDependencyArtifacts = project.getDependencyArtifacts();
99 lastDependencyArtifactCount = (lastDependencyArtifacts != null) ? lastDependencyArtifacts.size() : 0;
100 }
101 }