1
2
3
4 package org.apache.maven.api.model;
5
6 import java.io.Serializable;
7 import java.util.ArrayList;
8 import java.util.Collection;
9 import java.util.Collections;
10 import java.util.HashMap;
11 import java.util.List;
12 import java.util.Map;
13 import org.apache.maven.api.annotations.Experimental;
14 import org.apache.maven.api.annotations.Generated;
15 import org.apache.maven.api.annotations.Immutable;
16 import org.apache.maven.api.annotations.Nonnull;
17 import org.apache.maven.api.annotations.NotThreadSafe;
18 import org.apache.maven.api.annotations.ThreadSafe;
19
20
21
22
23
24 @Experimental
25 @Generated @ThreadSafe @Immutable
26 public class Build
27 extends BuildBase
28 implements Serializable, InputLocationTracker
29 {
30
31
32
33
34
35
36 final String sourceDirectory;
37
38
39
40
41
42
43
44 final String scriptSourceDirectory;
45
46
47
48
49
50
51 final String testSourceDirectory;
52
53
54
55
56 final String outputDirectory;
57
58
59
60
61 final String testOutputDirectory;
62
63
64
65 final List<Extension> extensions;
66
67 final InputLocation sourceDirectoryLocation;
68
69 final InputLocation scriptSourceDirectoryLocation;
70
71 final InputLocation testSourceDirectoryLocation;
72
73 final InputLocation outputDirectoryLocation;
74
75 final InputLocation testOutputDirectoryLocation;
76
77 final InputLocation extensionsLocation;
78
79
80
81
82
83 Build(
84 Collection<Plugin> plugins,
85 PluginManagement pluginManagement,
86 String defaultGoal,
87 Collection<Resource> resources,
88 Collection<Resource> testResources,
89 String directory,
90 String finalName,
91 Collection<String> filters,
92 String sourceDirectory,
93 String scriptSourceDirectory,
94 String testSourceDirectory,
95 String outputDirectory,
96 String testOutputDirectory,
97 Collection<Extension> extensions,
98 Map<Object, InputLocation> locations,
99 InputLocation location,
100 InputLocation pluginsLocation,
101 InputLocation pluginManagementLocation,
102 InputLocation defaultGoalLocation,
103 InputLocation resourcesLocation,
104 InputLocation testResourcesLocation,
105 InputLocation directoryLocation,
106 InputLocation finalNameLocation,
107 InputLocation filtersLocation,
108 InputLocation sourceDirectoryLocation,
109 InputLocation scriptSourceDirectoryLocation,
110 InputLocation testSourceDirectoryLocation,
111 InputLocation outputDirectoryLocation,
112 InputLocation testOutputDirectoryLocation,
113 InputLocation extensionsLocation
114 )
115 {
116 super(
117 plugins,
118 pluginManagement,
119 defaultGoal,
120 resources,
121 testResources,
122 directory,
123 finalName,
124 filters,
125 locations,
126 location,
127 pluginsLocation,
128 pluginManagementLocation,
129 defaultGoalLocation,
130 resourcesLocation,
131 testResourcesLocation,
132 directoryLocation,
133 finalNameLocation,
134 filtersLocation
135 );
136 this.sourceDirectory = sourceDirectory;
137 this.scriptSourceDirectory = scriptSourceDirectory;
138 this.testSourceDirectory = testSourceDirectory;
139 this.outputDirectory = outputDirectory;
140 this.testOutputDirectory = testOutputDirectory;
141 this.extensions = ImmutableCollections.copy( extensions );
142 this.sourceDirectoryLocation = sourceDirectoryLocation;
143 this.scriptSourceDirectoryLocation = scriptSourceDirectoryLocation;
144 this.testSourceDirectoryLocation = testSourceDirectoryLocation;
145 this.outputDirectoryLocation = outputDirectoryLocation;
146 this.testOutputDirectoryLocation = testOutputDirectoryLocation;
147 this.extensionsLocation = extensionsLocation;
148 }
149
150
151
152
153
154
155
156
157
158 public String getSourceDirectory()
159 {
160 return this.sourceDirectory;
161 }
162
163
164
165
166
167
168
169
170
171
172 public String getScriptSourceDirectory()
173 {
174 return this.scriptSourceDirectory;
175 }
176
177
178
179
180
181
182
183
184
185 public String getTestSourceDirectory()
186 {
187 return this.testSourceDirectory;
188 }
189
190
191
192
193
194
195
196 public String getOutputDirectory()
197 {
198 return this.outputDirectory;
199 }
200
201
202
203
204
205
206
207 public String getTestOutputDirectory()
208 {
209 return this.testOutputDirectory;
210 }
211
212
213
214
215
216
217 @Nonnull
218 public List<Extension> getExtensions()
219 {
220 return this.extensions;
221 }
222
223
224
225
226 public InputLocation getLocation( Object key )
227 {
228 if ( key instanceof String )
229 {
230 switch ( ( String ) key )
231 {
232 case "sourceDirectory":
233 return sourceDirectoryLocation;
234 case "scriptSourceDirectory":
235 return scriptSourceDirectoryLocation;
236 case "testSourceDirectory":
237 return testSourceDirectoryLocation;
238 case "outputDirectory":
239 return outputDirectoryLocation;
240 case "testOutputDirectory":
241 return testOutputDirectoryLocation;
242 case "extensions":
243 return extensionsLocation;
244 }
245 }
246 return super.getLocation( key );
247 }
248
249
250
251
252
253
254 @Nonnull
255 public Builder with()
256 {
257 return newBuilder( this );
258 }
259
260
261
262
263
264
265 @Nonnull
266 public Build withPlugins( Collection<Plugin> plugins )
267 {
268 return with().plugins( plugins ).build();
269 }
270
271
272
273
274
275
276 @Nonnull
277 public Build withPluginManagement( PluginManagement pluginManagement )
278 {
279 return with().pluginManagement( pluginManagement ).build();
280 }
281
282
283
284
285
286
287 @Nonnull
288 public Build withDefaultGoal( String defaultGoal )
289 {
290 return with().defaultGoal( defaultGoal ).build();
291 }
292
293
294
295
296
297
298 @Nonnull
299 public Build withResources( Collection<Resource> resources )
300 {
301 return with().resources( resources ).build();
302 }
303
304
305
306
307
308
309 @Nonnull
310 public Build withTestResources( Collection<Resource> testResources )
311 {
312 return with().testResources( testResources ).build();
313 }
314
315
316
317
318
319
320 @Nonnull
321 public Build withDirectory( String directory )
322 {
323 return with().directory( directory ).build();
324 }
325
326
327
328
329
330
331 @Nonnull
332 public Build withFinalName( String finalName )
333 {
334 return with().finalName( finalName ).build();
335 }
336
337
338
339
340
341
342 @Nonnull
343 public Build withFilters( Collection<String> filters )
344 {
345 return with().filters( filters ).build();
346 }
347
348
349
350
351
352
353 @Nonnull
354 public Build withSourceDirectory( String sourceDirectory )
355 {
356 return with().sourceDirectory( sourceDirectory ).build();
357 }
358
359
360
361
362
363
364 @Nonnull
365 public Build withScriptSourceDirectory( String scriptSourceDirectory )
366 {
367 return with().scriptSourceDirectory( scriptSourceDirectory ).build();
368 }
369
370
371
372
373
374
375 @Nonnull
376 public Build withTestSourceDirectory( String testSourceDirectory )
377 {
378 return with().testSourceDirectory( testSourceDirectory ).build();
379 }
380
381
382
383
384
385
386 @Nonnull
387 public Build withOutputDirectory( String outputDirectory )
388 {
389 return with().outputDirectory( outputDirectory ).build();
390 }
391
392
393
394
395
396
397 @Nonnull
398 public Build withTestOutputDirectory( String testOutputDirectory )
399 {
400 return with().testOutputDirectory( testOutputDirectory ).build();
401 }
402
403
404
405
406
407
408 @Nonnull
409 public Build withExtensions( Collection<Extension> extensions )
410 {
411 return with().extensions( extensions ).build();
412 }
413
414
415
416
417
418
419
420
421 @Nonnull
422 public static Build newInstance()
423 {
424 return newInstance( true );
425 }
426
427
428
429
430
431
432
433
434 @Nonnull
435 public static Build newInstance( boolean withDefaults )
436 {
437 return newBuilder( withDefaults ).build();
438 }
439
440
441
442
443
444
445
446
447 @Nonnull
448 public static Builder newBuilder()
449 {
450 return newBuilder( true );
451 }
452
453
454
455
456
457
458
459 @Nonnull
460 public static Builder newBuilder( boolean withDefaults )
461 {
462 return new Builder( withDefaults );
463 }
464
465
466
467
468
469
470
471
472 @Nonnull
473 public static Builder newBuilder( Build from )
474 {
475 return newBuilder( from, false );
476 }
477
478
479
480
481
482
483
484
485 @Nonnull
486 public static Builder newBuilder( Build from, boolean forceCopy )
487 {
488 return new Builder( from, forceCopy );
489 }
490
491
492
493
494
495
496 @NotThreadSafe
497 public static class Builder
498 extends BuildBase.Builder
499 {
500 Build base;
501 String sourceDirectory;
502 String scriptSourceDirectory;
503 String testSourceDirectory;
504 String outputDirectory;
505 String testOutputDirectory;
506 Collection<Extension> extensions;
507
508 Builder( boolean withDefaults )
509 {
510 super( withDefaults );
511 if ( withDefaults )
512 {
513 }
514 }
515
516 Builder( Build base, boolean forceCopy )
517 {
518 super( base, forceCopy );
519 if ( forceCopy )
520 {
521 this.sourceDirectory = base.sourceDirectory;
522 this.scriptSourceDirectory = base.scriptSourceDirectory;
523 this.testSourceDirectory = base.testSourceDirectory;
524 this.outputDirectory = base.outputDirectory;
525 this.testOutputDirectory = base.testOutputDirectory;
526 this.extensions = base.extensions;
527 }
528 else
529 {
530 this.base = base;
531 }
532 }
533
534 @Nonnull
535 public Builder plugins( Collection<Plugin> plugins )
536 {
537 this.plugins = plugins;
538 return this;
539 }
540
541 @Nonnull
542 public Builder pluginManagement( PluginManagement pluginManagement )
543 {
544 this.pluginManagement = pluginManagement;
545 return this;
546 }
547
548 @Nonnull
549 public Builder defaultGoal( String defaultGoal )
550 {
551 this.defaultGoal = defaultGoal;
552 return this;
553 }
554
555 @Nonnull
556 public Builder resources( Collection<Resource> resources )
557 {
558 this.resources = resources;
559 return this;
560 }
561
562 @Nonnull
563 public Builder testResources( Collection<Resource> testResources )
564 {
565 this.testResources = testResources;
566 return this;
567 }
568
569 @Nonnull
570 public Builder directory( String directory )
571 {
572 this.directory = directory;
573 return this;
574 }
575
576 @Nonnull
577 public Builder finalName( String finalName )
578 {
579 this.finalName = finalName;
580 return this;
581 }
582
583 @Nonnull
584 public Builder filters( Collection<String> filters )
585 {
586 this.filters = filters;
587 return this;
588 }
589
590 @Nonnull
591 public Builder sourceDirectory( String sourceDirectory )
592 {
593 this.sourceDirectory = sourceDirectory;
594 return this;
595 }
596
597 @Nonnull
598 public Builder scriptSourceDirectory( String scriptSourceDirectory )
599 {
600 this.scriptSourceDirectory = scriptSourceDirectory;
601 return this;
602 }
603
604 @Nonnull
605 public Builder testSourceDirectory( String testSourceDirectory )
606 {
607 this.testSourceDirectory = testSourceDirectory;
608 return this;
609 }
610
611 @Nonnull
612 public Builder outputDirectory( String outputDirectory )
613 {
614 this.outputDirectory = outputDirectory;
615 return this;
616 }
617
618 @Nonnull
619 public Builder testOutputDirectory( String testOutputDirectory )
620 {
621 this.testOutputDirectory = testOutputDirectory;
622 return this;
623 }
624
625 @Nonnull
626 public Builder extensions( Collection<Extension> extensions )
627 {
628 this.extensions = extensions;
629 return this;
630 }
631
632
633 @Nonnull
634 public Builder location( Object key, InputLocation location )
635 {
636 if ( location != null )
637 {
638 if ( this.locations == null )
639 {
640 this.locations = new HashMap<>();
641 }
642 this.locations.put( key, location );
643 }
644 return this;
645 }
646
647 @Nonnull
648 public Build build()
649 {
650 if ( base != null
651 && ( plugins == null || plugins == base.plugins )
652 && ( pluginManagement == null || pluginManagement == base.pluginManagement )
653 && ( defaultGoal == null || defaultGoal == base.defaultGoal )
654 && ( resources == null || resources == base.resources )
655 && ( testResources == null || testResources == base.testResources )
656 && ( directory == null || directory == base.directory )
657 && ( finalName == null || finalName == base.finalName )
658 && ( filters == null || filters == base.filters )
659 && ( sourceDirectory == null || sourceDirectory == base.sourceDirectory )
660 && ( scriptSourceDirectory == null || scriptSourceDirectory == base.scriptSourceDirectory )
661 && ( testSourceDirectory == null || testSourceDirectory == base.testSourceDirectory )
662 && ( outputDirectory == null || outputDirectory == base.outputDirectory )
663 && ( testOutputDirectory == null || testOutputDirectory == base.testOutputDirectory )
664 && ( extensions == null || extensions == base.extensions )
665 )
666 {
667 return base;
668 }
669 Map<Object, InputLocation> locations = null;
670 InputLocation location = null;
671 InputLocation pluginsLocation = null;
672 InputLocation pluginManagementLocation = null;
673 InputLocation defaultGoalLocation = null;
674 InputLocation resourcesLocation = null;
675 InputLocation testResourcesLocation = null;
676 InputLocation directoryLocation = null;
677 InputLocation finalNameLocation = null;
678 InputLocation filtersLocation = null;
679 InputLocation sourceDirectoryLocation = null;
680 InputLocation scriptSourceDirectoryLocation = null;
681 InputLocation testSourceDirectoryLocation = null;
682 InputLocation outputDirectoryLocation = null;
683 InputLocation testOutputDirectoryLocation = null;
684 InputLocation extensionsLocation = null;
685 if ( this.locations != null )
686 {
687 locations = this.locations;
688 location = locations.remove( "" );
689 pluginsLocation = locations.remove( "plugins" );
690 pluginManagementLocation = locations.remove( "pluginManagement" );
691 defaultGoalLocation = locations.remove( "defaultGoal" );
692 resourcesLocation = locations.remove( "resources" );
693 testResourcesLocation = locations.remove( "testResources" );
694 directoryLocation = locations.remove( "directory" );
695 finalNameLocation = locations.remove( "finalName" );
696 filtersLocation = locations.remove( "filters" );
697 sourceDirectoryLocation = locations.remove( "sourceDirectory" );
698 scriptSourceDirectoryLocation = locations.remove( "scriptSourceDirectory" );
699 testSourceDirectoryLocation = locations.remove( "testSourceDirectory" );
700 outputDirectoryLocation = locations.remove( "outputDirectory" );
701 testOutputDirectoryLocation = locations.remove( "testOutputDirectory" );
702 extensionsLocation = locations.remove( "extensions" );
703 }
704 return new Build(
705 plugins != null ? plugins : ( base != null ? base.plugins : null ),
706 pluginManagement != null ? pluginManagement : ( base != null ? base.pluginManagement : null ),
707 defaultGoal != null ? defaultGoal : ( base != null ? base.defaultGoal : null ),
708 resources != null ? resources : ( base != null ? base.resources : null ),
709 testResources != null ? testResources : ( base != null ? base.testResources : null ),
710 directory != null ? directory : ( base != null ? base.directory : null ),
711 finalName != null ? finalName : ( base != null ? base.finalName : null ),
712 filters != null ? filters : ( base != null ? base.filters : null ),
713 sourceDirectory != null ? sourceDirectory : ( base != null ? base.sourceDirectory : null ),
714 scriptSourceDirectory != null ? scriptSourceDirectory : ( base != null ? base.scriptSourceDirectory : null ),
715 testSourceDirectory != null ? testSourceDirectory : ( base != null ? base.testSourceDirectory : null ),
716 outputDirectory != null ? outputDirectory : ( base != null ? base.outputDirectory : null ),
717 testOutputDirectory != null ? testOutputDirectory : ( base != null ? base.testOutputDirectory : null ),
718 extensions != null ? extensions : ( base != null ? base.extensions : null ),
719 locations != null ? locations : ( base != null ? base.locations : null ),
720 location != null ? location : ( base != null ? base.location : null ),
721 pluginsLocation != null ? pluginsLocation : ( base != null ? base.pluginsLocation : null ),
722 pluginManagementLocation != null ? pluginManagementLocation : ( base != null ? base.pluginManagementLocation : null ),
723 defaultGoalLocation != null ? defaultGoalLocation : ( base != null ? base.defaultGoalLocation : null ),
724 resourcesLocation != null ? resourcesLocation : ( base != null ? base.resourcesLocation : null ),
725 testResourcesLocation != null ? testResourcesLocation : ( base != null ? base.testResourcesLocation : null ),
726 directoryLocation != null ? directoryLocation : ( base != null ? base.directoryLocation : null ),
727 finalNameLocation != null ? finalNameLocation : ( base != null ? base.finalNameLocation : null ),
728 filtersLocation != null ? filtersLocation : ( base != null ? base.filtersLocation : null ),
729 sourceDirectoryLocation != null ? sourceDirectoryLocation : ( base != null ? base.sourceDirectoryLocation : null ),
730 scriptSourceDirectoryLocation != null ? scriptSourceDirectoryLocation : ( base != null ? base.scriptSourceDirectoryLocation : null ),
731 testSourceDirectoryLocation != null ? testSourceDirectoryLocation : ( base != null ? base.testSourceDirectoryLocation : null ),
732 outputDirectoryLocation != null ? outputDirectoryLocation : ( base != null ? base.outputDirectoryLocation : null ),
733 testOutputDirectoryLocation != null ? testOutputDirectoryLocation : ( base != null ? base.testOutputDirectoryLocation : null ),
734 extensionsLocation != null ? extensionsLocation : ( base != null ? base.extensionsLocation : null )
735 );
736 }
737 }
738
739 }