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 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 BuildBase
32 extends PluginConfiguration
33 implements Serializable, InputLocationTracker
34 {
35
36
37
38
39
40
41 final String defaultGoal;
42
43
44
45
46
47
48
49
50 @Deprecated(since = "4.0.0")
51 final List<Resource> resources;
52
53
54
55
56
57
58
59 @Deprecated(since = "4.0.0")
60 final List<Resource> testResources;
61
62
63
64
65 final String directory;
66
67
68
69
70
71 final String finalName;
72
73
74
75 final List<String> filters;
76
77
78
79
80
81 protected BuildBase(Builder builder) {
82 super(builder);
83 this.defaultGoal = builder.defaultGoal != null ? builder.defaultGoal : (builder.base != null ? builder.base.defaultGoal : null);
84 this.resources = ImmutableCollections.copy(builder.resources != null ? builder.resources : (builder.base != null ? builder.base.resources : null));
85 this.testResources = ImmutableCollections.copy(builder.testResources != null ? builder.testResources : (builder.base != null ? builder.base.testResources : null));
86 this.directory = builder.directory != null ? builder.directory : (builder.base != null ? builder.base.directory : null);
87 this.finalName = builder.finalName != null ? builder.finalName : (builder.base != null ? builder.base.finalName : null);
88 this.filters = ImmutableCollections.copy(builder.filters != null ? builder.filters : (builder.base != null ? builder.base.filters : null));
89 }
90
91
92
93
94
95
96
97
98
99 public String getDefaultGoal() {
100 return this.defaultGoal;
101 }
102
103
104
105
106
107
108
109
110
111
112
113 @Deprecated(since = "4.0.0")
114 @Nonnull
115 public List<Resource> getResources() {
116 return this.resources;
117 }
118
119
120
121
122
123
124
125
126
127
128 @Deprecated(since = "4.0.0")
129 @Nonnull
130 public List<Resource> getTestResources() {
131 return this.testResources;
132 }
133
134
135
136
137
138
139
140 public String getDirectory() {
141 return this.directory;
142 }
143
144
145
146
147
148
149
150
151 public String getFinalName() {
152 return this.finalName;
153 }
154
155
156
157
158
159
160 @Nonnull
161 public List<String> getFilters() {
162 return this.filters;
163 }
164
165
166
167
168
169
170 @Nonnull
171 public Builder with() {
172 return newBuilder(this);
173 }
174
175
176
177
178
179
180 @Nonnull
181 public BuildBase withPlugins(Collection<Plugin> plugins) {
182 return newBuilder(this, true).plugins(plugins).build();
183 }
184
185
186
187
188
189
190 @Nonnull
191 public BuildBase withPluginManagement(PluginManagement pluginManagement) {
192 return newBuilder(this, true).pluginManagement(pluginManagement).build();
193 }
194
195
196
197
198
199
200 @Nonnull
201 public BuildBase withDefaultGoal(String defaultGoal) {
202 return newBuilder(this, true).defaultGoal(defaultGoal).build();
203 }
204
205
206
207
208
209
210 @Deprecated(since = "4.0.0")
211 @Nonnull
212 public BuildBase withResources(Collection<Resource> resources) {
213 return newBuilder(this, true).resources(resources).build();
214 }
215
216
217
218
219
220
221 @Deprecated(since = "4.0.0")
222 @Nonnull
223 public BuildBase withTestResources(Collection<Resource> testResources) {
224 return newBuilder(this, true).testResources(testResources).build();
225 }
226
227
228
229
230
231
232 @Nonnull
233 public BuildBase withDirectory(String directory) {
234 return newBuilder(this, true).directory(directory).build();
235 }
236
237
238
239
240
241
242 @Nonnull
243 public BuildBase withFinalName(String finalName) {
244 return newBuilder(this, true).finalName(finalName).build();
245 }
246
247
248
249
250
251
252 @Nonnull
253 public BuildBase withFilters(Collection<String> filters) {
254 return newBuilder(this, true).filters(filters).build();
255 }
256
257
258
259
260
261
262
263
264 @Nonnull
265 public static BuildBase newInstance() {
266 return newInstance(true);
267 }
268
269
270
271
272
273
274
275
276 @Nonnull
277 public static BuildBase newInstance(boolean withDefaults) {
278 return newBuilder(withDefaults).build();
279 }
280
281
282
283
284
285
286
287
288 @Nonnull
289 public static Builder newBuilder() {
290 return newBuilder(true);
291 }
292
293
294
295
296
297
298
299 @Nonnull
300 public static Builder newBuilder(boolean withDefaults) {
301 return new Builder(withDefaults);
302 }
303
304
305
306
307
308
309
310
311 @Nonnull
312 public static Builder newBuilder(BuildBase from) {
313 return newBuilder(from, false);
314 }
315
316
317
318
319
320
321
322
323 @Nonnull
324 public static Builder newBuilder(BuildBase from, boolean forceCopy) {
325 return new Builder(from, forceCopy);
326 }
327
328
329
330
331
332
333 @NotThreadSafe
334 public static class Builder
335 extends PluginConfiguration.Builder
336 {
337 BuildBase base;
338 String defaultGoal;
339 Collection<Resource> resources;
340 Collection<Resource> testResources;
341 String directory;
342 String finalName;
343 Collection<String> filters;
344
345 protected Builder(boolean withDefaults) {
346 super(withDefaults);
347 if (withDefaults) {
348 }
349 }
350
351 protected Builder(BuildBase base, boolean forceCopy) {
352 super(base, forceCopy);
353 if (forceCopy) {
354 this.defaultGoal = base.defaultGoal;
355 this.resources = base.resources;
356 this.testResources = base.testResources;
357 this.directory = base.directory;
358 this.finalName = base.finalName;
359 this.filters = base.filters;
360 this.locations = base.locations;
361 this.importedFrom = base.importedFrom;
362 } else {
363 this.base = base;
364 }
365 }
366
367 @Nonnull
368 public Builder plugins(Collection<Plugin> plugins) {
369 this.plugins = plugins;
370 return this;
371 }
372
373 @Nonnull
374 public Builder pluginManagement(PluginManagement pluginManagement) {
375 this.pluginManagement = pluginManagement;
376 return this;
377 }
378
379 @Nonnull
380 public Builder defaultGoal(String defaultGoal) {
381 this.defaultGoal = defaultGoal;
382 return this;
383 }
384
385 @Deprecated(since = "4.0.0")
386 @Nonnull
387 public Builder resources(Collection<Resource> resources) {
388 this.resources = resources;
389 return this;
390 }
391
392 @Deprecated(since = "4.0.0")
393 @Nonnull
394 public Builder testResources(Collection<Resource> testResources) {
395 this.testResources = testResources;
396 return this;
397 }
398
399 @Nonnull
400 public Builder directory(String directory) {
401 this.directory = directory;
402 return this;
403 }
404
405 @Nonnull
406 public Builder finalName(String finalName) {
407 this.finalName = finalName;
408 return this;
409 }
410
411 @Nonnull
412 public Builder filters(Collection<String> filters) {
413 this.filters = filters;
414 return this;
415 }
416
417
418 @Nonnull
419 public Builder location(Object key, InputLocation location) {
420 if (location != null) {
421 if (!(this.locations instanceof HashMap)) {
422 this.locations = this.locations != null ? new HashMap<>(this.locations) : new HashMap<>();
423 }
424 this.locations.put(key, location);
425 }
426 return this;
427 }
428
429 @Nonnull
430 public Builder importedFrom(InputLocation importedFrom) {
431 this.importedFrom = importedFrom;
432 return this;
433 }
434
435 @Nonnull
436 public BuildBase build() {
437
438 if (base != null
439 && (plugins == null || plugins == base.plugins)
440 && (pluginManagement == null || pluginManagement == base.pluginManagement)
441 && (defaultGoal == null || defaultGoal == base.defaultGoal)
442 && (resources == null || resources == base.resources)
443 && (testResources == null || testResources == base.testResources)
444 && (directory == null || directory == base.directory)
445 && (finalName == null || finalName == base.finalName)
446 && (filters == null || filters == base.filters)
447 ) {
448 return base;
449 }
450 return new BuildBase(this);
451 }
452
453 }
454
455
456
457
458
459
460 public String toString()
461 {
462 return "BuildBase {" + super.toString() + "}";
463 }
464
465
466 }