1
2
3
4
5 package org.apache.maven.api.plugin.descriptor;
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 java.util.Objects;
15 import java.util.Optional;
16 import java.util.Set;
17 import java.util.stream.Collectors;
18 import java.util.stream.Stream;
19 import org.apache.maven.api.annotations.Experimental;
20 import org.apache.maven.api.annotations.Generated;
21 import org.apache.maven.api.annotations.Immutable;
22 import org.apache.maven.api.annotations.Nonnull;
23 import org.apache.maven.api.annotations.NotThreadSafe;
24 import org.apache.maven.api.annotations.ThreadSafe;
25
26
27
28
29 @Experimental
30 @Generated @ThreadSafe @Immutable
31 public class MojoDescriptor
32 implements Serializable
33 {
34
35
36
37
38 final String goal;
39
40
41
42 final String description;
43
44
45
46 final String implementation;
47
48
49
50 final String language;
51
52
53
54
55
56
57 final String phase;
58
59
60
61 final String executePhase;
62
63
64
65 final String executeGoal;
66
67
68
69 final String executeLifecycle;
70
71
72
73
74
75 final String dependencyResolution;
76
77
78
79
80
81
82
83
84 final String dependencyCollection;
85
86
87
88 final boolean directInvocationOnly;
89
90
91
92 final boolean projectRequired;
93
94
95
96 final boolean onlineRequired;
97
98
99
100
101 final boolean aggregator;
102
103
104
105 final boolean inheritedByDefault;
106
107
108
109 final String since;
110
111
112
113
114 final String deprecated;
115
116
117
118
119
120 final String configurator;
121
122
123
124 final List<Parameter> parameters;
125
126
127
128 final List<Resolution> resolutions;
129
130
131
132 final String id;
133
134
135
136 final String fullGoalName;
137
138
139
140
141
142 protected MojoDescriptor(Builder builder) {
143 this.goal = builder.goal != null ? builder.goal : (builder.base != null ? builder.base.goal : null);
144 this.description = builder.description != null ? builder.description : (builder.base != null ? builder.base.description : null);
145 this.implementation = builder.implementation != null ? builder.implementation : (builder.base != null ? builder.base.implementation : null);
146 this.language = builder.language != null ? builder.language : (builder.base != null ? builder.base.language : null);
147 this.phase = builder.phase != null ? builder.phase : (builder.base != null ? builder.base.phase : null);
148 this.executePhase = builder.executePhase != null ? builder.executePhase : (builder.base != null ? builder.base.executePhase : null);
149 this.executeGoal = builder.executeGoal != null ? builder.executeGoal : (builder.base != null ? builder.base.executeGoal : null);
150 this.executeLifecycle = builder.executeLifecycle != null ? builder.executeLifecycle : (builder.base != null ? builder.base.executeLifecycle : null);
151 this.dependencyResolution = builder.dependencyResolution != null ? builder.dependencyResolution : (builder.base != null ? builder.base.dependencyResolution : null);
152 this.dependencyCollection = builder.dependencyCollection != null ? builder.dependencyCollection : (builder.base != null ? builder.base.dependencyCollection : null);
153 this.directInvocationOnly = builder.directInvocationOnly != null ? builder.directInvocationOnly : (builder.base != null ? builder.base.directInvocationOnly : false);
154 this.projectRequired = builder.projectRequired != null ? builder.projectRequired : (builder.base != null ? builder.base.projectRequired : true);
155 this.onlineRequired = builder.onlineRequired != null ? builder.onlineRequired : (builder.base != null ? builder.base.onlineRequired : false);
156 this.aggregator = builder.aggregator != null ? builder.aggregator : (builder.base != null ? builder.base.aggregator : false);
157 this.inheritedByDefault = builder.inheritedByDefault != null ? builder.inheritedByDefault : (builder.base != null ? builder.base.inheritedByDefault : true);
158 this.since = builder.since != null ? builder.since : (builder.base != null ? builder.base.since : null);
159 this.deprecated = builder.deprecated != null ? builder.deprecated : (builder.base != null ? builder.base.deprecated : null);
160 this.configurator = builder.configurator != null ? builder.configurator : (builder.base != null ? builder.base.configurator : null);
161 this.parameters = ImmutableCollections.copy(builder.parameters != null ? builder.parameters : (builder.base != null ? builder.base.parameters : null));
162 this.resolutions = ImmutableCollections.copy(builder.resolutions != null ? builder.resolutions : (builder.base != null ? builder.base.resolutions : null));
163 this.id = builder.id != null ? builder.id : (builder.base != null ? builder.base.id : null);
164 this.fullGoalName = builder.fullGoalName != null ? builder.fullGoalName : (builder.base != null ? builder.base.fullGoalName : null);
165 }
166
167
168
169
170
171
172
173 public String getGoal() {
174 return this.goal;
175 }
176
177
178
179
180
181
182 public String getDescription() {
183 return this.description;
184 }
185
186
187
188
189
190
191 public String getImplementation() {
192 return this.implementation;
193 }
194
195
196
197
198
199
200 public String getLanguage() {
201 return this.language;
202 }
203
204
205
206
207
208
209
210
211
212 public String getPhase() {
213 return this.phase;
214 }
215
216
217
218
219
220
221 public String getExecutePhase() {
222 return this.executePhase;
223 }
224
225
226
227
228
229
230 public String getExecuteGoal() {
231 return this.executeGoal;
232 }
233
234
235
236
237
238
239 public String getExecuteLifecycle() {
240 return this.executeLifecycle;
241 }
242
243
244
245
246
247
248
249
250 public String getDependencyResolution() {
251 return this.dependencyResolution;
252 }
253
254
255
256
257
258
259
260
261
262
263
264 public String getDependencyCollection() {
265 return this.dependencyCollection;
266 }
267
268
269
270
271
272
273 public boolean isDirectInvocationOnly() {
274 return this.directInvocationOnly;
275 }
276
277
278
279
280
281
282 public boolean isProjectRequired() {
283 return this.projectRequired;
284 }
285
286
287
288
289
290
291 public boolean isOnlineRequired() {
292 return this.onlineRequired;
293 }
294
295
296
297
298
299
300
301 public boolean isAggregator() {
302 return this.aggregator;
303 }
304
305
306
307
308
309
310 public boolean isInheritedByDefault() {
311 return this.inheritedByDefault;
312 }
313
314
315
316
317
318
319 public String getSince() {
320 return this.since;
321 }
322
323
324
325
326
327
328
329 public String getDeprecated() {
330 return this.deprecated;
331 }
332
333
334
335
336
337
338
339
340 public String getConfigurator() {
341 return this.configurator;
342 }
343
344
345
346
347
348
349 @Nonnull
350 public List<Parameter> getParameters() {
351 return this.parameters;
352 }
353
354
355
356
357
358
359 @Nonnull
360 public List<Resolution> getResolutions() {
361 return this.resolutions;
362 }
363
364
365
366
367
368
369 public String getId() {
370 return this.id;
371 }
372
373
374
375
376
377
378 public String getFullGoalName() {
379 return this.fullGoalName;
380 }
381
382
383
384
385
386
387 @Nonnull
388 public Builder with() {
389 return newBuilder(this);
390 }
391
392
393
394
395
396
397 @Nonnull
398 public MojoDescriptor withGoal(String goal) {
399 return newBuilder(this, true).goal(goal).build();
400 }
401
402
403
404
405
406
407 @Nonnull
408 public MojoDescriptor withDescription(String description) {
409 return newBuilder(this, true).description(description).build();
410 }
411
412
413
414
415
416
417 @Nonnull
418 public MojoDescriptor withImplementation(String implementation) {
419 return newBuilder(this, true).implementation(implementation).build();
420 }
421
422
423
424
425
426
427 @Nonnull
428 public MojoDescriptor withLanguage(String language) {
429 return newBuilder(this, true).language(language).build();
430 }
431
432
433
434
435
436
437 @Nonnull
438 public MojoDescriptor withPhase(String phase) {
439 return newBuilder(this, true).phase(phase).build();
440 }
441
442
443
444
445
446
447 @Nonnull
448 public MojoDescriptor withExecutePhase(String executePhase) {
449 return newBuilder(this, true).executePhase(executePhase).build();
450 }
451
452
453
454
455
456
457 @Nonnull
458 public MojoDescriptor withExecuteGoal(String executeGoal) {
459 return newBuilder(this, true).executeGoal(executeGoal).build();
460 }
461
462
463
464
465
466
467 @Nonnull
468 public MojoDescriptor withExecuteLifecycle(String executeLifecycle) {
469 return newBuilder(this, true).executeLifecycle(executeLifecycle).build();
470 }
471
472
473
474
475
476
477 @Nonnull
478 public MojoDescriptor withDependencyResolution(String dependencyResolution) {
479 return newBuilder(this, true).dependencyResolution(dependencyResolution).build();
480 }
481
482
483
484
485
486
487 @Nonnull
488 public MojoDescriptor withDependencyCollection(String dependencyCollection) {
489 return newBuilder(this, true).dependencyCollection(dependencyCollection).build();
490 }
491
492
493
494
495
496
497 @Nonnull
498 public MojoDescriptor withDirectInvocationOnly(boolean directInvocationOnly) {
499 return newBuilder(this, true).directInvocationOnly(directInvocationOnly).build();
500 }
501
502
503
504
505
506
507 @Nonnull
508 public MojoDescriptor withProjectRequired(boolean projectRequired) {
509 return newBuilder(this, true).projectRequired(projectRequired).build();
510 }
511
512
513
514
515
516
517 @Nonnull
518 public MojoDescriptor withOnlineRequired(boolean onlineRequired) {
519 return newBuilder(this, true).onlineRequired(onlineRequired).build();
520 }
521
522
523
524
525
526
527 @Nonnull
528 public MojoDescriptor withAggregator(boolean aggregator) {
529 return newBuilder(this, true).aggregator(aggregator).build();
530 }
531
532
533
534
535
536
537 @Nonnull
538 public MojoDescriptor withInheritedByDefault(boolean inheritedByDefault) {
539 return newBuilder(this, true).inheritedByDefault(inheritedByDefault).build();
540 }
541
542
543
544
545
546
547 @Nonnull
548 public MojoDescriptor withSince(String since) {
549 return newBuilder(this, true).since(since).build();
550 }
551
552
553
554
555
556
557 @Nonnull
558 public MojoDescriptor withDeprecated(String deprecated) {
559 return newBuilder(this, true).deprecated(deprecated).build();
560 }
561
562
563
564
565
566
567 @Nonnull
568 public MojoDescriptor withConfigurator(String configurator) {
569 return newBuilder(this, true).configurator(configurator).build();
570 }
571
572
573
574
575
576
577 @Nonnull
578 public MojoDescriptor withParameters(Collection<Parameter> parameters) {
579 return newBuilder(this, true).parameters(parameters).build();
580 }
581
582
583
584
585
586
587 @Nonnull
588 public MojoDescriptor withResolutions(Collection<Resolution> resolutions) {
589 return newBuilder(this, true).resolutions(resolutions).build();
590 }
591
592
593
594
595
596
597 @Nonnull
598 public MojoDescriptor withId(String id) {
599 return newBuilder(this, true).id(id).build();
600 }
601
602
603
604
605
606
607 @Nonnull
608 public MojoDescriptor withFullGoalName(String fullGoalName) {
609 return newBuilder(this, true).fullGoalName(fullGoalName).build();
610 }
611
612
613
614
615
616
617
618
619 @Nonnull
620 public static MojoDescriptor newInstance() {
621 return newInstance(true);
622 }
623
624
625
626
627
628
629
630
631 @Nonnull
632 public static MojoDescriptor newInstance(boolean withDefaults) {
633 return newBuilder(withDefaults).build();
634 }
635
636
637
638
639
640
641
642
643 @Nonnull
644 public static Builder newBuilder() {
645 return newBuilder(true);
646 }
647
648
649
650
651
652
653
654 @Nonnull
655 public static Builder newBuilder(boolean withDefaults) {
656 return new Builder(withDefaults);
657 }
658
659
660
661
662
663
664
665
666 @Nonnull
667 public static Builder newBuilder(MojoDescriptor from) {
668 return newBuilder(from, false);
669 }
670
671
672
673
674
675
676
677
678 @Nonnull
679 public static Builder newBuilder(MojoDescriptor from, boolean forceCopy) {
680 return new Builder(from, forceCopy);
681 }
682
683
684
685
686
687
688 @NotThreadSafe
689 public static class Builder
690 {
691 MojoDescriptor base;
692 String goal;
693 String description;
694 String implementation;
695 String language;
696 String phase;
697 String executePhase;
698 String executeGoal;
699 String executeLifecycle;
700 String dependencyResolution;
701 String dependencyCollection;
702 Boolean directInvocationOnly;
703 Boolean projectRequired;
704 Boolean onlineRequired;
705 Boolean aggregator;
706 Boolean inheritedByDefault;
707 String since;
708 String deprecated;
709 String configurator;
710 Collection<Parameter> parameters;
711 Collection<Resolution> resolutions;
712 String id;
713 String fullGoalName;
714
715 protected Builder(boolean withDefaults) {
716 if (withDefaults) {
717 this.language = "java";
718 this.dependencyResolution = "runtime";
719 this.directInvocationOnly = false;
720 this.projectRequired = true;
721 this.onlineRequired = false;
722 this.aggregator = false;
723 this.inheritedByDefault = true;
724 }
725 }
726
727 protected Builder(MojoDescriptor base, boolean forceCopy) {
728 if (forceCopy) {
729 this.goal = base.goal;
730 this.description = base.description;
731 this.implementation = base.implementation;
732 this.language = base.language;
733 this.phase = base.phase;
734 this.executePhase = base.executePhase;
735 this.executeGoal = base.executeGoal;
736 this.executeLifecycle = base.executeLifecycle;
737 this.dependencyResolution = base.dependencyResolution;
738 this.dependencyCollection = base.dependencyCollection;
739 this.directInvocationOnly = base.directInvocationOnly;
740 this.projectRequired = base.projectRequired;
741 this.onlineRequired = base.onlineRequired;
742 this.aggregator = base.aggregator;
743 this.inheritedByDefault = base.inheritedByDefault;
744 this.since = base.since;
745 this.deprecated = base.deprecated;
746 this.configurator = base.configurator;
747 this.parameters = base.parameters;
748 this.resolutions = base.resolutions;
749 this.id = base.id;
750 this.fullGoalName = base.fullGoalName;
751 } else {
752 this.base = base;
753 }
754 }
755
756 @Nonnull
757 public Builder goal(String goal) {
758 this.goal = goal;
759 return this;
760 }
761
762 @Nonnull
763 public Builder description(String description) {
764 this.description = description;
765 return this;
766 }
767
768 @Nonnull
769 public Builder implementation(String implementation) {
770 this.implementation = implementation;
771 return this;
772 }
773
774 @Nonnull
775 public Builder language(String language) {
776 this.language = language;
777 return this;
778 }
779
780 @Nonnull
781 public Builder phase(String phase) {
782 this.phase = phase;
783 return this;
784 }
785
786 @Nonnull
787 public Builder executePhase(String executePhase) {
788 this.executePhase = executePhase;
789 return this;
790 }
791
792 @Nonnull
793 public Builder executeGoal(String executeGoal) {
794 this.executeGoal = executeGoal;
795 return this;
796 }
797
798 @Nonnull
799 public Builder executeLifecycle(String executeLifecycle) {
800 this.executeLifecycle = executeLifecycle;
801 return this;
802 }
803
804 @Nonnull
805 public Builder dependencyResolution(String dependencyResolution) {
806 this.dependencyResolution = dependencyResolution;
807 return this;
808 }
809
810 @Nonnull
811 public Builder dependencyCollection(String dependencyCollection) {
812 this.dependencyCollection = dependencyCollection;
813 return this;
814 }
815
816 @Nonnull
817 public Builder directInvocationOnly(boolean directInvocationOnly) {
818 this.directInvocationOnly = directInvocationOnly;
819 return this;
820 }
821
822 @Nonnull
823 public Builder projectRequired(boolean projectRequired) {
824 this.projectRequired = projectRequired;
825 return this;
826 }
827
828 @Nonnull
829 public Builder onlineRequired(boolean onlineRequired) {
830 this.onlineRequired = onlineRequired;
831 return this;
832 }
833
834 @Nonnull
835 public Builder aggregator(boolean aggregator) {
836 this.aggregator = aggregator;
837 return this;
838 }
839
840 @Nonnull
841 public Builder inheritedByDefault(boolean inheritedByDefault) {
842 this.inheritedByDefault = inheritedByDefault;
843 return this;
844 }
845
846 @Nonnull
847 public Builder since(String since) {
848 this.since = since;
849 return this;
850 }
851
852 @Nonnull
853 public Builder deprecated(String deprecated) {
854 this.deprecated = deprecated;
855 return this;
856 }
857
858 @Nonnull
859 public Builder configurator(String configurator) {
860 this.configurator = configurator;
861 return this;
862 }
863
864 @Nonnull
865 public Builder parameters(Collection<Parameter> parameters) {
866 this.parameters = parameters;
867 return this;
868 }
869
870 @Nonnull
871 public Builder resolutions(Collection<Resolution> resolutions) {
872 this.resolutions = resolutions;
873 return this;
874 }
875
876 @Nonnull
877 public Builder id(String id) {
878 this.id = id;
879 return this;
880 }
881
882 @Nonnull
883 public Builder fullGoalName(String fullGoalName) {
884 this.fullGoalName = fullGoalName;
885 return this;
886 }
887
888
889 @Nonnull
890 public MojoDescriptor build() {
891
892 if (base != null
893 && (goal == null || goal == base.goal)
894 && (description == null || description == base.description)
895 && (implementation == null || implementation == base.implementation)
896 && (language == null || language == base.language)
897 && (phase == null || phase == base.phase)
898 && (executePhase == null || executePhase == base.executePhase)
899 && (executeGoal == null || executeGoal == base.executeGoal)
900 && (executeLifecycle == null || executeLifecycle == base.executeLifecycle)
901 && (dependencyResolution == null || dependencyResolution == base.dependencyResolution)
902 && (dependencyCollection == null || dependencyCollection == base.dependencyCollection)
903 && (directInvocationOnly == null || directInvocationOnly == base.directInvocationOnly)
904 && (projectRequired == null || projectRequired == base.projectRequired)
905 && (onlineRequired == null || onlineRequired == base.onlineRequired)
906 && (aggregator == null || aggregator == base.aggregator)
907 && (inheritedByDefault == null || inheritedByDefault == base.inheritedByDefault)
908 && (since == null || since == base.since)
909 && (deprecated == null || deprecated == base.deprecated)
910 && (configurator == null || configurator == base.configurator)
911 && (parameters == null || parameters == base.parameters)
912 && (resolutions == null || resolutions == base.resolutions)
913 && (id == null || id == base.id)
914 && (fullGoalName == null || fullGoalName == base.fullGoalName)
915 ) {
916 return base;
917 }
918 return new MojoDescriptor(this);
919 }
920
921 }
922
923 }