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.fromConfiguration;
20
21 import java.io.File;
22 import java.util.List;
23
24 import org.apache.commons.lang3.StringUtils;
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.plugin.MojoFailureException;
27 import org.apache.maven.plugins.annotations.Component;
28 import org.apache.maven.plugins.annotations.LifecyclePhase;
29 import org.apache.maven.plugins.annotations.Mojo;
30 import org.apache.maven.plugins.annotations.Parameter;
31 import org.apache.maven.plugins.dependency.utils.UnpackUtil;
32 import org.apache.maven.plugins.dependency.utils.filters.ArtifactItemFilter;
33 import org.apache.maven.plugins.dependency.utils.filters.MarkerFileFilter;
34 import org.apache.maven.plugins.dependency.utils.markers.MarkerHandler;
35 import org.apache.maven.plugins.dependency.utils.markers.UnpackFileMarkerHandler;
36 import org.codehaus.plexus.components.io.filemappers.FileMapper;
37
38
39
40
41
42
43
44 @Mojo(name = "unpack", defaultPhase = LifecyclePhase.PROCESS_SOURCES, requiresProject = false, threadSafe = true)
45 public class UnpackMojo extends AbstractFromConfigurationMojo {
46
47 @Component
48 UnpackUtil unpackUtil;
49
50
51
52
53 @Parameter(defaultValue = "${project.build.directory}/dependency-maven-plugin-markers")
54 private File markersDirectory;
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.filemappers")
90 private FileMapper[] fileMappers;
91
92
93
94
95
96
97 @SuppressWarnings("unused")
98 @Parameter(property = "artifact")
99 private String artifact;
100
101
102
103
104
105
106
107
108
109
110 @Override
111 protected void doExecute() throws MojoExecutionException, MojoFailureException {
112 if (isSkip()) {
113 return;
114 }
115
116 verifyRequirements();
117
118 List<ArtifactItem> processedItems = getProcessedArtifactItems(false);
119 for (ArtifactItem artifactItem : processedItems) {
120 if (artifactItem.isNeedsProcessing()) {
121 unpackArtifact(artifactItem);
122 } else {
123 this.getLog().info(artifactItem.getArtifact().getFile().getName() + " already unpacked.");
124 }
125 }
126 }
127
128
129
130
131
132
133
134
135 private void unpackArtifact(ArtifactItem artifactItem) throws MojoExecutionException {
136 MarkerHandler handler = new UnpackFileMarkerHandler(artifactItem, this.markersDirectory);
137
138 unpackUtil.unpack(
139 artifactItem.getArtifact().getFile(),
140 artifactItem.getType(),
141 artifactItem.getOutputDirectory(),
142 artifactItem.getIncludes(),
143 artifactItem.getExcludes(),
144 artifactItem.getEncoding(),
145 ignorePermissions,
146 artifactItem.getFileMappers(),
147 getLog());
148 handler.setMarker();
149 }
150
151 @Override
152 ArtifactItemFilter getMarkedArtifactFilter(ArtifactItem item) {
153 MarkerHandler handler = new UnpackFileMarkerHandler(item, this.markersDirectory);
154
155 return new MarkerFileFilter(
156 this.isOverWriteReleases(), this.isOverWriteSnapshots(), this.isOverWriteIfNewer(), handler);
157 }
158
159
160
161
162
163
164 protected List<ArtifactItem> getProcessedArtifactItems(boolean removeVersion) throws MojoExecutionException {
165 List<ArtifactItem> items =
166 super.getProcessedArtifactItems(new ProcessArtifactItemsRequest(removeVersion, false, false, false));
167 for (ArtifactItem artifactItem : items) {
168 if (StringUtils.isEmpty(artifactItem.getIncludes())) {
169 artifactItem.setIncludes(getIncludes());
170 }
171 if (StringUtils.isEmpty(artifactItem.getExcludes())) {
172 artifactItem.setExcludes(getExcludes());
173 }
174 }
175 return items;
176 }
177
178
179
180
181 public File getMarkersDirectory() {
182 return this.markersDirectory;
183 }
184
185
186
187
188 public void setMarkersDirectory(File theMarkersDirectory) {
189 this.markersDirectory = theMarkersDirectory;
190 }
191
192
193
194
195 public String getExcludes() {
196 return this.excludes;
197 }
198
199
200
201
202 public void setExcludes(String excludes) {
203 this.excludes = excludes;
204 }
205
206
207
208
209 public String getIncludes() {
210 return this.includes;
211 }
212
213
214
215
216 public void setIncludes(String includes) {
217 this.includes = includes;
218 }
219
220
221
222
223
224
225
226 public FileMapper[] getFileMappers() {
227 return this.fileMappers;
228 }
229
230
231
232
233
234
235
236 public void setFileMappers(FileMapper[] fileMappers) {
237 this.fileMappers = fileMappers;
238 }
239 }