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