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.fromDependencies;
20
21 import java.io.File;
22
23 import org.apache.maven.artifact.Artifact;
24 import org.apache.maven.plugin.MojoExecutionException;
25 import org.apache.maven.plugins.annotations.Component;
26 import org.apache.maven.plugins.annotations.LifecyclePhase;
27 import org.apache.maven.plugins.annotations.Mojo;
28 import org.apache.maven.plugins.annotations.Parameter;
29 import org.apache.maven.plugins.annotations.ResolutionScope;
30 import org.apache.maven.plugins.dependency.utils.DependencyStatusSets;
31 import org.apache.maven.plugins.dependency.utils.DependencyUtil;
32 import org.apache.maven.plugins.dependency.utils.UnpackUtil;
33 import org.apache.maven.plugins.dependency.utils.filters.MarkerFileFilter;
34 import org.apache.maven.plugins.dependency.utils.markers.DefaultFileMarkerHandler;
35 import org.apache.maven.shared.artifact.filter.collection.ArtifactsFilter;
36 import org.codehaus.plexus.components.io.filemappers.FileMapper;
37
38
39
40
41
42
43
44
45 @Mojo(
46 name = "unpack-dependencies",
47 requiresDependencyResolution = ResolutionScope.TEST,
48 defaultPhase = LifecyclePhase.PROCESS_SOURCES,
49 threadSafe = true)
50
51 public class UnpackDependenciesMojo extends AbstractFromDependenciesMojo {
52
53 @Component
54 UnpackUtil unpackUtil;
55
56
57
58
59
60
61
62
63 @Parameter(property = "mdep.unpack.includes")
64 private String includes;
65
66
67
68
69
70
71
72
73 @Parameter(property = "mdep.unpack.excludes")
74 private String excludes;
75
76
77
78
79
80
81 @Parameter(property = "dependency.ignorePermissions", defaultValue = "false")
82 private boolean ignorePermissions;
83
84
85
86
87
88
89 @Parameter(property = "mdep.unpack.encoding")
90 private String encoding;
91
92
93
94
95
96
97 @Parameter(property = "mdep.unpack.filemappers")
98 private FileMapper[] fileMappers;
99
100
101
102
103
104
105
106
107 @Override
108 protected void doExecute() throws MojoExecutionException {
109 DependencyStatusSets dss = getDependencySets(this.failOnMissingClassifierArtifact);
110
111 for (Artifact artifact : dss.getResolvedDependencies()) {
112 File destDir = DependencyUtil.getFormattedOutputDirectory(
113 useSubDirectoryPerScope,
114 useSubDirectoryPerType,
115 useSubDirectoryPerArtifact,
116 useRepositoryLayout,
117 stripVersion,
118 stripType,
119 outputDirectory,
120 artifact);
121 unpackUtil.unpack(
122 artifact.getFile(),
123 artifact.getType(),
124 destDir,
125 getIncludes(),
126 getExcludes(),
127 getEncoding(),
128 ignorePermissions,
129 getFileMappers(),
130 getLog());
131 DefaultFileMarkerHandler handler = new DefaultFileMarkerHandler(artifact, this.markersDirectory);
132 handler.setMarker();
133 }
134
135 for (Artifact artifact : dss.getSkippedDependencies()) {
136 getLog().info(artifact.getId() + " already exists in destination.");
137 }
138 }
139
140 @Override
141 protected ArtifactsFilter getMarkedArtifactFilter() {
142 return new MarkerFileFilter(
143 this.overWriteReleases,
144 this.overWriteSnapshots,
145 this.overWriteIfNewer,
146 new DefaultFileMarkerHandler(this.markersDirectory));
147 }
148
149
150
151
152 public String getExcludes() {
153 return DependencyUtil.cleanToBeTokenizedString(this.excludes);
154 }
155
156
157
158
159 public void setExcludes(String excludes) {
160 this.excludes = excludes;
161 }
162
163
164
165
166 public String getIncludes() {
167 return DependencyUtil.cleanToBeTokenizedString(this.includes);
168 }
169
170
171
172
173 public void setIncludes(String includes) {
174 this.includes = includes;
175 }
176
177
178
179
180
181 public void setEncoding(String encoding) {
182 this.encoding = encoding;
183 }
184
185
186
187
188
189 public String getEncoding() {
190 return this.encoding;
191 }
192
193
194
195
196
197
198
199 public FileMapper[] getFileMappers() {
200 return this.fileMappers;
201 }
202
203
204
205
206
207
208
209 public void setFileMappers(FileMapper[] fileMappers) {
210 this.fileMappers = fileMappers;
211 }
212 }