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