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