1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.dependency.resolvers;
20
21 import java.io.File;
22 import java.util.LinkedHashSet;
23 import java.util.Set;
24
25 import org.apache.maven.artifact.Artifact;
26 import org.apache.maven.plugins.annotations.Parameter;
27 import org.apache.maven.plugins.dependency.fromDependencies.AbstractDependencyFilterMojo;
28 import org.apache.maven.plugins.dependency.utils.DependencyUtil;
29 import org.apache.maven.project.ProjectBuildingRequest;
30 import org.apache.maven.shared.artifact.filter.collection.ArtifactIdFilter;
31 import org.apache.maven.shared.artifact.filter.collection.ClassifierFilter;
32 import org.apache.maven.shared.artifact.filter.collection.FilterArtifacts;
33 import org.apache.maven.shared.artifact.filter.collection.GroupIdFilter;
34 import org.apache.maven.shared.artifact.filter.collection.ScopeFilter;
35 import org.apache.maven.shared.artifact.filter.collection.TypeFilter;
36 import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult;
37 import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
38 import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
39
40
41
42
43 public abstract class AbstractResolveMojo extends AbstractDependencyFilterMojo {
44
45
46
47
48
49
50 @Parameter(property = "outputFile")
51 protected File outputFile;
52
53
54
55
56
57
58 @Parameter(property = "appendOutput", defaultValue = "false")
59 protected boolean appendOutput;
60
61
62
63
64
65
66 @Parameter(property = "excludeReactor", defaultValue = "true")
67 protected boolean excludeReactor;
68
69
70
71
72 @Parameter
73 protected boolean ignorePermissions;
74
75
76
77
78 protected FilterArtifacts getArtifactsFilter() {
79 final FilterArtifacts filter = new FilterArtifacts();
80
81 if (excludeReactor) {
82
83 filter.addFilter(new ExcludeReactorProjectsArtifactFilter(reactorProjects, getLog()));
84 }
85
86 filter.addFilter(new ScopeFilter(
87 DependencyUtil.cleanToBeTokenizedString(this.includeScope),
88 DependencyUtil.cleanToBeTokenizedString(this.excludeScope)));
89
90 filter.addFilter(new TypeFilter(
91 DependencyUtil.cleanToBeTokenizedString(this.includeTypes),
92 DependencyUtil.cleanToBeTokenizedString(this.excludeTypes)));
93
94 filter.addFilter(new ClassifierFilter(
95 DependencyUtil.cleanToBeTokenizedString(this.includeClassifiers),
96 DependencyUtil.cleanToBeTokenizedString(this.excludeClassifiers)));
97
98 filter.addFilter(new GroupIdFilter(
99 DependencyUtil.cleanToBeTokenizedString(this.includeGroupIds),
100 DependencyUtil.cleanToBeTokenizedString(this.excludeGroupIds)));
101
102 filter.addFilter(new ArtifactIdFilter(
103 DependencyUtil.cleanToBeTokenizedString(this.includeArtifactIds),
104 DependencyUtil.cleanToBeTokenizedString(this.excludeArtifactIds)));
105
106 return filter;
107 }
108
109
110
111
112
113
114
115
116 protected Set<Artifact> resolveArtifactDependencies(final DependableCoordinate artifact)
117 throws DependencyResolverException {
118 ProjectBuildingRequest buildingRequest = newResolveArtifactProjectBuildingRequest();
119
120 Iterable<ArtifactResult> artifactResults =
121 getDependencyResolver().resolveDependencies(buildingRequest, artifact, null);
122
123 Set<Artifact> artifacts = new LinkedHashSet<>();
124
125 for (final ArtifactResult artifactResult : artifactResults) {
126 artifacts.add(artifactResult.getArtifact());
127 }
128
129 return artifacts;
130 }
131 }