1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.shared.filtering;
20
21 import java.io.File;
22 import java.io.Reader;
23 import java.util.ArrayList;
24 import java.util.List;
25
26 import org.apache.maven.execution.MavenSession;
27 import org.apache.maven.model.Resource;
28 import org.apache.maven.project.MavenProject;
29 import org.codehaus.plexus.interpolation.StringSearchInterpolator;
30 import org.codehaus.plexus.interpolation.ValueSource;
31
32
33
34
35
36
37 public class MavenResourcesExecution extends AbstractMavenFilteringRequest {
38
39 private List<Resource> resources;
40
41 private File outputDirectory;
42
43 private List<String> nonFilteredFileExtensions;
44
45 private List<FilterWrapper> filterWrappers;
46
47 private File resourcesBaseDirectory;
48
49 private boolean useDefaultFilterWrappers = false;
50
51 private boolean filterFilenames = false;
52
53 private String encoding;
54
55
56
57
58 private String propertiesEncoding;
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 private boolean addDefaultExcludes = true;
88
89
90
91
92
93
94 private boolean overwrite = false;
95
96
97
98
99
100
101 private boolean includeEmptyDirs = false;
102
103
104
105
106
107
108 private boolean supportMultiLineFiltering;
109
110
111
112
113
114 private boolean flatten = false;
115
116
117
118
119 public MavenResourcesExecution() {
120
121 }
122
123
124
125
126
127
128
129
130
131
132
133
134
135 public MavenResourcesExecution(
136 List<Resource> resources,
137 File outputDirectory,
138 MavenProject mavenProject,
139 String encoding,
140 List<String> fileFilters,
141 List<String> nonFilteredFileExtensions,
142 MavenSession mavenSession) {
143 super(mavenProject, fileFilters, mavenSession);
144 this.encoding = encoding;
145 this.resources = resources;
146 this.outputDirectory = outputDirectory;
147 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
148 this.useDefaultFilterWrappers = true;
149 this.addDefaultExcludes = true;
150 this.resourcesBaseDirectory = mavenProject.getBasedir();
151 }
152
153
154
155
156
157
158
159
160
161 public MavenResourcesExecution(
162 List<Resource> resources,
163 File outputDirectory,
164 String encoding,
165 List<FilterWrapper> filterWrappers,
166 File resourcesBaseDirectory,
167 List<String> nonFilteredFileExtensions) {
168 this();
169 this.resources = resources;
170 this.outputDirectory = outputDirectory;
171 this.filterWrappers = filterWrappers;
172 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
173 this.resourcesBaseDirectory = resourcesBaseDirectory;
174 this.useDefaultFilterWrappers = false;
175 setEncoding(encoding);
176 }
177
178
179
180
181
182
183 public String getEncoding() {
184 return encoding;
185 }
186
187
188
189
190
191
192 public void setEncoding(String encoding) {
193 this.encoding = encoding;
194 }
195
196
197
198
199
200
201
202 public String getPropertiesEncoding() {
203 return propertiesEncoding;
204 }
205
206
207
208
209
210
211
212 public void setPropertiesEncoding(String propertiesEncoding) {
213 this.propertiesEncoding = propertiesEncoding;
214 }
215
216
217
218
219 public List<Resource> getResources() {
220 return resources;
221 }
222
223
224
225
226 public void setResources(List<Resource> resources) {
227 this.resources = resources;
228 }
229
230
231
232
233 public File getOutputDirectory() {
234 return outputDirectory;
235 }
236
237
238
239
240 public void setOutputDirectory(File outputDirectory) {
241 this.outputDirectory = outputDirectory;
242 }
243
244
245
246
247 public List<String> getNonFilteredFileExtensions() {
248 return nonFilteredFileExtensions;
249 }
250
251
252
253
254 public void setNonFilteredFileExtensions(List<String> nonFilteredFileExtensions) {
255 this.nonFilteredFileExtensions = nonFilteredFileExtensions;
256 }
257
258
259
260
261 public List<FilterWrapper> getFilterWrappers() {
262 return filterWrappers;
263 }
264
265
266
267
268 public void setFilterWrappers(List<FilterWrapper> filterWrappers) {
269 this.filterWrappers = filterWrappers;
270 }
271
272
273
274
275 public void addFilterWrapper(FilterWrapper filterWrapper) {
276 if (this.filterWrappers == null) {
277 this.filterWrappers = new ArrayList<>();
278 }
279 this.filterWrappers.add(filterWrapper);
280 }
281
282
283
284
285
286
287
288
289
290 public void addFilerWrapperWithEscaping(
291 final ValueSource valueSource,
292 final String startExp,
293 final String endExp,
294 final String escapeString,
295 final boolean multiLineFiltering) {
296 addFilterWrapper(new FilterWrapper() {
297 @Override
298 public Reader getReader(Reader reader) {
299 StringSearchInterpolator propertiesInterpolator = new StringSearchInterpolator(startExp, endExp);
300 propertiesInterpolator.addValueSource(valueSource);
301 propertiesInterpolator.setEscapeString(escapeString);
302 InterpolatorFilterReaderLineEnding interpolatorFilterReader = new InterpolatorFilterReaderLineEnding(
303 reader, propertiesInterpolator, startExp, endExp, multiLineFiltering);
304 interpolatorFilterReader.setInterpolateWithPrefixPattern(false);
305 return interpolatorFilterReader;
306 }
307 });
308 }
309
310
311
312
313 public File getResourcesBaseDirectory() {
314 return resourcesBaseDirectory;
315 }
316
317
318
319
320 public void setResourcesBaseDirectory(File resourcesBaseDirectory) {
321 this.resourcesBaseDirectory = resourcesBaseDirectory;
322 }
323
324
325
326
327 public boolean isUseDefaultFilterWrappers() {
328 return useDefaultFilterWrappers;
329 }
330
331
332
333
334 public void setUseDefaultFilterWrappers(boolean useDefaultFilterWrappers) {
335 this.useDefaultFilterWrappers = useDefaultFilterWrappers;
336 }
337
338
339
340
341 public boolean isAddDefaultExcludes() {
342 return addDefaultExcludes;
343 }
344
345
346
347
348 public void setAddDefaultExcludes(boolean addDefaultExcludes) {
349 this.addDefaultExcludes = addDefaultExcludes;
350 }
351
352
353
354
355
356
357
358 public boolean isOverwrite() {
359 return overwrite;
360 }
361
362
363
364
365
366
367
368 public void setOverwrite(boolean overwrite) {
369 this.overwrite = overwrite;
370 }
371
372
373
374
375
376
377 public boolean isFlatten() {
378 return flatten;
379 }
380
381
382
383
384
385
386 public void setFlatten(boolean flatten) {
387 this.flatten = flatten;
388 }
389
390
391
392
393
394
395
396 public boolean isIncludeEmptyDirs() {
397 return includeEmptyDirs;
398 }
399
400
401
402
403
404
405
406 public void setIncludeEmptyDirs(boolean includeEmptyDirs) {
407 this.includeEmptyDirs = includeEmptyDirs;
408 }
409
410
411
412
413
414 public boolean isFilterFilenames() {
415 return filterFilenames;
416 }
417
418
419
420
421
422 public void setFilterFilenames(boolean filterFilenames) {
423 this.filterFilenames = filterFilenames;
424 }
425
426
427
428
429 public MavenResourcesExecution copyOf() {
430 MavenResourcesExecution mre = new MavenResourcesExecution();
431 mre.setAdditionalProperties(this.getAdditionalProperties());
432 mre.setEncoding(this.getEncoding());
433 mre.setEscapedBackslashesInFilePath(this.isEscapedBackslashesInFilePath());
434 mre.setEscapeString(this.getEscapeString());
435 mre.setFileFilters(copyList(this.getFileFilters()));
436 mre.setFilterWrappers(copyList(this.getFilterWrappers()));
437 mre.setIncludeEmptyDirs(this.isIncludeEmptyDirs());
438 mre.setInjectProjectBuildFilters(this.isInjectProjectBuildFilters());
439 mre.setMavenProject(this.getMavenProject());
440 mre.setMavenSession(this.getMavenSession());
441 mre.setNonFilteredFileExtensions(copyList(this.getNonFilteredFileExtensions()));
442 mre.setOutputDirectory(this.getOutputDirectory());
443 mre.setOverwrite(this.isOverwrite());
444 mre.setProjectStartExpressions(copyList(this.getProjectStartExpressions()));
445 mre.setResources(copyList(this.getResources()));
446 mre.setResourcesBaseDirectory(this.getResourcesBaseDirectory());
447 mre.setUseDefaultFilterWrappers(this.isUseDefaultFilterWrappers());
448 mre.setAddDefaultExcludes(this.isAddDefaultExcludes());
449 mre.setSupportMultiLineFiltering(this.isSupportMultiLineFiltering());
450 return mre;
451 }
452
453 private <T> List<T> copyList(List<T> lst) {
454 if (lst == null) {
455 return null;
456 } else if (lst.isEmpty()) {
457 return new ArrayList<>();
458 } else {
459 return new ArrayList<>(lst);
460 }
461 }
462
463 @Override
464 public boolean isSupportMultiLineFiltering() {
465 return supportMultiLineFiltering;
466 }
467
468 @Override
469 public void setSupportMultiLineFiltering(boolean supportMultiLineFiltering) {
470 this.supportMultiLineFiltering = supportMultiLineFiltering;
471 }
472 }