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