1 package org.apache.maven.shared.release.config;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.List;
23 import java.util.regex.Matcher;
24 import java.util.regex.Pattern;
25
26 import org.apache.maven.model.Scm;
27 import org.apache.maven.shared.release.util.ReleaseUtil;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31
32
33
34
35
36
37 public class ReleaseDescriptorBuilder
38 {
39 private static final Pattern PROPERTY_PATTERN = Pattern.compile( "\\$\\{[^}]+}" );
40
41 private final Logger logger;
42
43
44
45
46
47
48 public static final class BuilderReleaseDescriptor extends ModelloReleaseDescriptor implements ReleaseDescriptor
49 {
50 private BuilderReleaseDescriptor()
51 {
52 }
53 }
54
55 private final BuilderReleaseDescriptor releaseDescriptor;
56
57
58
59
60 public ReleaseDescriptorBuilder()
61 {
62 this( LoggerFactory.getLogger( ReleaseDescriptorBuilder.class ) );
63 }
64
65
66
67
68 ReleaseDescriptorBuilder( Logger logger )
69 {
70 this.releaseDescriptor = new BuilderReleaseDescriptor();
71 this.releaseDescriptor.setLineSeparator( ReleaseUtil.LS );
72 this.logger = logger;
73 }
74
75
76
77
78
79
80
81 public ReleaseDescriptorBuilder addCheckModificationExclude( String string )
82 {
83 releaseDescriptor.addCheckModificationExclude( string );
84 return this;
85 }
86
87
88
89
90
91
92
93 public ReleaseDescriptorBuilder setActivateProfiles( List<String> profiles )
94 {
95 releaseDescriptor.setActivateProfiles( profiles );
96 return this;
97 }
98
99
100
101
102
103
104
105 public ReleaseDescriptorBuilder setAddSchema( boolean addSchema )
106 {
107 releaseDescriptor.setAddSchema( addSchema );
108 return this;
109 }
110
111
112
113
114
115
116
117 public ReleaseDescriptorBuilder setAdditionalArguments( String additionalArguments )
118 {
119 if ( additionalArguments != null )
120 {
121 Matcher matcher = PROPERTY_PATTERN.matcher( additionalArguments );
122 StringBuffer buf = new StringBuffer();
123 while ( matcher.find() )
124 {
125 matcher.appendReplacement( buf, "" );
126 logger.warn( "arguments parameter contains unresolved property: '{}'",
127 matcher.group() );
128 }
129 matcher.appendTail( buf );
130
131 releaseDescriptor.setAdditionalArguments( buf.toString() );
132 }
133 else
134 {
135 releaseDescriptor.setAdditionalArguments( null );
136 }
137 return this;
138 }
139
140
141
142
143
144
145
146 public ReleaseDescriptorBuilder setAllowTimestampedSnapshots( boolean allowTimestampedSnapshots )
147 {
148 releaseDescriptor.setAllowTimestampedSnapshots( allowTimestampedSnapshots );
149 return this;
150 }
151
152
153
154
155
156
157
158 public ReleaseDescriptorBuilder setAutoVersionSubmodules( boolean autoVersionSubmodules )
159 {
160 releaseDescriptor.setAutoVersionSubmodules( autoVersionSubmodules );
161 return this;
162 }
163
164
165
166
167
168
169
170 public ReleaseDescriptorBuilder setBranchCreation( boolean branchCreation )
171 {
172 releaseDescriptor.setBranchCreation( branchCreation );
173 return this;
174 }
175
176
177
178
179
180
181
182 public ReleaseDescriptorBuilder setCheckModificationExcludes( List<String> checkModificationExcludes )
183 {
184 releaseDescriptor.setCheckModificationExcludes( checkModificationExcludes );
185 return this;
186 }
187
188
189
190
191
192
193
194 public ReleaseDescriptorBuilder setCheckoutDirectory( String checkoutDirectory )
195 {
196 releaseDescriptor.setCheckoutDirectory( checkoutDirectory );
197 return this;
198 }
199
200
201
202
203
204
205
206 public ReleaseDescriptorBuilder setCommitByProject( boolean commitByProject )
207 {
208 releaseDescriptor.setCommitByProject( commitByProject );
209 return this;
210 }
211
212
213
214
215
216
217
218 public ReleaseDescriptorBuilder setCompletedPhase( String completedPhase )
219 {
220 releaseDescriptor.setCompletedPhase( completedPhase );
221 return this;
222 }
223
224
225
226
227
228
229
230 public ReleaseDescriptorBuilder setCompletionGoals( String completionGoals )
231 {
232 releaseDescriptor.setCompletionGoals( completionGoals );
233 return this;
234 }
235
236
237
238
239
240
241
242 public ReleaseDescriptorBuilder setDefaultDevelopmentVersion( String defaultDevelopmentVersion )
243 {
244 releaseDescriptor.setDefaultDevelopmentVersion( defaultDevelopmentVersion );
245 return this;
246 }
247
248
249
250
251
252
253
254 public ReleaseDescriptorBuilder setDefaultReleaseVersion( String defaultReleaseVersion )
255 {
256 releaseDescriptor.setDefaultReleaseVersion( defaultReleaseVersion );
257 return this;
258 }
259
260
261
262
263
264
265
266 public ReleaseDescriptorBuilder setDescription( String description )
267 {
268 releaseDescriptor.setDescription( description );
269 return this;
270 }
271
272
273
274
275
276
277
278 public ReleaseDescriptorBuilder setGenerateReleasePoms( boolean generateReleasePoms )
279 {
280 releaseDescriptor.setGenerateReleasePoms( generateReleasePoms );
281 return this;
282 }
283
284
285
286
287
288
289
290 public ReleaseDescriptorBuilder setInteractive( boolean interactive )
291 {
292 releaseDescriptor.setInteractive( interactive );
293 return this;
294 }
295
296
297
298
299
300
301
302 public ReleaseDescriptorBuilder setLineSeparator( String ls )
303 {
304 releaseDescriptor.setLineSeparator( ls );
305 return this;
306 }
307
308
309
310
311
312
313
314 public ReleaseDescriptorBuilder setLocalCheckout( boolean localCheckout )
315 {
316 releaseDescriptor.setLocalCheckout( localCheckout );
317 return this;
318 }
319
320
321
322
323
324
325
326 public ReleaseDescriptorBuilder setModelEncoding( String modelEncoding )
327 {
328 releaseDescriptor.setModelEncoding( modelEncoding );
329 return this;
330 }
331
332
333
334
335
336
337
338 public ReleaseDescriptorBuilder setName( String name )
339 {
340 releaseDescriptor.setName( name );
341 return this;
342 }
343
344
345
346
347
348
349
350 public ReleaseDescriptorBuilder setPerformGoals( String performGoals )
351 {
352 releaseDescriptor.setPerformGoals( performGoals );
353 return this;
354 }
355
356
357
358
359
360
361
362 public ReleaseDescriptorBuilder setPomFileName( String pomFileName )
363 {
364 releaseDescriptor.setPomFileName( pomFileName );
365 return this;
366 }
367
368
369
370
371
372
373
374 public ReleaseDescriptorBuilder setPreparationGoals( String preparationGoals )
375 {
376 releaseDescriptor.setPreparationGoals( preparationGoals );
377 return this;
378 }
379
380
381
382
383
384
385
386 public ReleaseDescriptorBuilder setProjectNamingPolicyId( String projectNamingPolicyId )
387 {
388 releaseDescriptor.setProjectNamingPolicyId( projectNamingPolicyId );
389 return this;
390 }
391
392
393
394
395
396
397
398 public ReleaseDescriptorBuilder setProjectVersionPolicyId( String projectVersionPolicyId )
399 {
400 releaseDescriptor.setProjectVersionPolicyId( projectVersionPolicyId );
401 return this;
402 }
403
404
405
406
407
408
409
410 public ReleaseDescriptorBuilder setPushChanges( boolean pushChanges )
411 {
412 releaseDescriptor.setPushChanges( pushChanges );
413 return this;
414 }
415
416
417
418
419
420
421
422 public ReleaseDescriptorBuilder setWorkItem( String workItem )
423 {
424 releaseDescriptor.setWorkItem( workItem );
425 return this;
426 }
427
428
429
430
431
432
433
434 public ReleaseDescriptorBuilder setReleaseStrategyId( String releaseStrategyId )
435 {
436 releaseDescriptor.setReleaseStrategyId( releaseStrategyId );
437 return this;
438 }
439
440
441
442
443
444
445
446 public ReleaseDescriptorBuilder setRemoteTagging( boolean remoteTagging )
447 {
448 releaseDescriptor.setRemoteTagging( remoteTagging );
449 return this;
450 }
451
452
453
454
455
456
457
458 public ReleaseDescriptorBuilder setScmBranchBase( String scmBranchBase )
459 {
460 releaseDescriptor.setScmBranchBase( scmBranchBase );
461 return this;
462 }
463
464
465
466
467
468
469
470 public ReleaseDescriptorBuilder setScmCommentPrefix( String scmCommentPrefix )
471 {
472 releaseDescriptor.setScmCommentPrefix( scmCommentPrefix );
473 return this;
474 }
475
476
477
478
479
480
481
482
483 public ReleaseDescriptorBuilder setScmShallowClone( boolean scmShallowClone )
484 {
485 releaseDescriptor.setScmShallowClone( scmShallowClone );
486 return this;
487 }
488
489
490
491
492
493
494
495
496 public ReleaseDescriptorBuilder setScmReleaseCommitComment( String scmReleaseCommitComment )
497 {
498 releaseDescriptor.setScmReleaseCommitComment( scmReleaseCommitComment );
499 return this;
500 }
501
502
503
504
505
506
507
508
509 public ReleaseDescriptorBuilder setScmDevelopmentCommitComment( String scmDevelopmentCommitComment )
510 {
511 releaseDescriptor.setScmDevelopmentCommitComment( scmDevelopmentCommitComment );
512 return this;
513 }
514
515
516
517
518
519
520
521
522 public ReleaseDescriptorBuilder setScmBranchCommitComment( String scmBranchCommitComment )
523 {
524 releaseDescriptor.setScmBranchCommitComment( scmBranchCommitComment );
525 return this;
526 }
527
528
529
530
531
532
533
534
535 public ReleaseDescriptorBuilder setScmRollbackCommitComment( String scmRollbackCommitComment )
536 {
537 releaseDescriptor.setScmRollbackCommitComment( scmRollbackCommitComment );
538 return this;
539 }
540
541
542
543
544
545
546
547 public ReleaseDescriptorBuilder setScmId( String scmId )
548 {
549 releaseDescriptor.setScmId( scmId );
550 return this;
551 }
552
553
554
555
556
557
558
559 public ReleaseDescriptorBuilder setScmPassword( String scmPassword )
560 {
561 releaseDescriptor.setScmPassword( scmPassword );
562 return this;
563 }
564
565
566
567
568
569
570
571 public ReleaseDescriptorBuilder setScmPrivateKey( String scmPrivateKey )
572 {
573 releaseDescriptor.setScmPrivateKey( scmPrivateKey );
574 return this;
575 }
576
577
578
579
580
581
582
583 public ReleaseDescriptorBuilder setScmPrivateKeyPassPhrase( String scmPrivateKeyPassPhrase )
584 {
585 releaseDescriptor.setScmPrivateKeyPassPhrase( scmPrivateKeyPassPhrase );
586 return this;
587 }
588
589
590
591
592
593
594
595 public ReleaseDescriptorBuilder setScmRelativePathProjectDirectory( String scmRelativePathProjectDirectory )
596 {
597 releaseDescriptor.setScmRelativePathProjectDirectory( scmRelativePathProjectDirectory );
598 return this;
599 }
600
601
602
603
604
605
606
607 public ReleaseDescriptorBuilder setScmReleaseLabel( String scmReleaseLabel )
608 {
609 releaseDescriptor.setScmReleaseLabel( scmReleaseLabel );
610 return this;
611 }
612
613
614
615
616
617
618
619 public ReleaseDescriptorBuilder setScmReleasedPomRevision( String scmReleasedPomRevision )
620 {
621 releaseDescriptor.setScmReleasedPomRevision( scmReleasedPomRevision );
622 return this;
623 }
624
625
626
627
628
629
630
631 public ReleaseDescriptorBuilder setScmSourceUrl( String scmSourceUrl )
632 {
633 releaseDescriptor.setScmSourceUrl( scmSourceUrl );
634 return this;
635 }
636
637
638
639
640
641
642
643 public ReleaseDescriptorBuilder setScmTagBase( String scmTagBase )
644 {
645 releaseDescriptor.setScmTagBase( scmTagBase );
646 return this;
647 }
648
649
650
651
652
653
654
655 public ReleaseDescriptorBuilder setScmTagNameFormat( String scmTagNameFormat )
656 {
657 releaseDescriptor.setScmTagNameFormat( scmTagNameFormat );
658 return this;
659 }
660
661
662
663
664
665
666
667 public ReleaseDescriptorBuilder setScmSignTags( boolean signTags )
668 {
669 releaseDescriptor.setScmSignTags( signTags );
670 return this;
671 }
672
673
674
675
676
677
678
679 public ReleaseDescriptorBuilder setScmUseEditMode( boolean scmUseEditMode )
680 {
681 releaseDescriptor.setScmUseEditMode( scmUseEditMode );
682 return this;
683 }
684
685
686
687
688
689
690
691 public ReleaseDescriptorBuilder setScmUsername( String scmUsername )
692 {
693 releaseDescriptor.setScmUsername( scmUsername );
694 return this;
695 }
696
697
698
699
700
701
702
703 public ReleaseDescriptorBuilder setSnapshotReleasePluginAllowed( boolean snapshotReleasePluginAllowed )
704 {
705 releaseDescriptor.setSnapshotReleasePluginAllowed( snapshotReleasePluginAllowed );
706 return this;
707 }
708
709
710
711
712
713
714
715 public ReleaseDescriptorBuilder setSuppressCommitBeforeTagOrBranch( boolean suppressCommitBeforeTagOrBranch )
716 {
717 releaseDescriptor.setSuppressCommitBeforeTagOrBranch( suppressCommitBeforeTagOrBranch );
718 return this;
719 }
720
721
722
723
724
725
726
727 public ReleaseDescriptorBuilder setUpdateBranchVersions( boolean updateBranchVersions )
728 {
729 releaseDescriptor.setUpdateBranchVersions( updateBranchVersions );
730 return this;
731 }
732
733
734
735
736
737
738
739 public ReleaseDescriptorBuilder setUpdateDependencies( boolean updateDependencies )
740 {
741 releaseDescriptor.setUpdateDependencies( updateDependencies );
742 return this;
743 }
744
745
746
747
748
749
750
751 public ReleaseDescriptorBuilder setUpdateVersionsToSnapshot( boolean updateVersionsToSnapshot )
752 {
753 releaseDescriptor.setUpdateVersionsToSnapshot( updateVersionsToSnapshot );
754 return this;
755 }
756
757
758
759
760
761
762
763 public ReleaseDescriptorBuilder setUpdateWorkingCopyVersions( boolean updateWorkingCopyVersions )
764 {
765 releaseDescriptor.setUpdateWorkingCopyVersions( updateWorkingCopyVersions );
766 return this;
767 }
768
769
770
771
772
773
774
775 public ReleaseDescriptorBuilder setUseReleaseProfile( boolean useReleaseProfile )
776 {
777 releaseDescriptor.setUseReleaseProfile( useReleaseProfile );
778 return this;
779 }
780
781
782
783
784
785
786
787 public ReleaseDescriptorBuilder setWaitBeforeTagging( int waitBeforeTagging )
788 {
789 releaseDescriptor.setWaitBeforeTagging( waitBeforeTagging );
790 return this;
791 }
792
793
794
795
796
797
798
799 public ReleaseDescriptorBuilder setWorkingDirectory( String workingDirectory )
800 {
801 releaseDescriptor.setWorkingDirectory( workingDirectory );
802 return this;
803 }
804
805
806
807
808
809
810
811
812 public ReleaseDescriptorBuilder addReleaseVersion( String key, String value )
813 {
814 releaseDescriptor.addReleaseVersion( key, value );
815 return this;
816 }
817
818
819
820
821
822
823
824
825 public ReleaseDescriptorBuilder addDevelopmentVersion( String key, String value )
826 {
827 releaseDescriptor.addDevelopmentVersion( key, value );
828 return this;
829 }
830
831
832
833
834
835
836
837
838 public ReleaseDescriptorBuilder addOriginalScmInfo( String key, Scm value )
839 {
840 releaseDescriptor.addOriginalScmInfo( key, value );
841 return this;
842 }
843
844
845
846
847
848
849
850 public void putOriginalVersion( String projectKey, String version )
851 {
852 releaseDescriptor.addOriginalVersion( projectKey, version );
853 }
854
855
856
857
858
859
860
861
862 public ReleaseDescriptorBuilder addDependencyOriginalVersion( String dependencyKey, String version )
863 {
864 releaseDescriptor.addDependencyOriginalVersion( dependencyKey, version );
865 return this;
866
867 }
868
869
870
871
872
873
874
875
876 public ReleaseDescriptorBuilder addDependencyReleaseVersion( String dependencyKey, String version )
877 {
878 releaseDescriptor.addDependencyReleaseVersion( dependencyKey, version );
879 return this;
880 }
881
882
883
884
885
886
887
888
889 public ReleaseDescriptorBuilder addDependencyDevelopmentVersion( String dependencyKey, String version )
890 {
891 releaseDescriptor.addDependencyDevelopmentVersion( dependencyKey, version );
892 return this;
893 }
894
895
896
897
898
899
900
901 public ReleaseDescriptorBuilder setAutoResolveSnapshots( String autoResolveSnapshots )
902 {
903 releaseDescriptor.setAutoResolveSnapshots( autoResolveSnapshots );
904 return this;
905 }
906
907
908
909
910
911
912
913 public ReleaseDescriptorBuilder setPinExternals( boolean pinExternals )
914 {
915 releaseDescriptor.setPinExternals( pinExternals );
916 return this;
917 }
918
919 public BuilderReleaseDescriptor build()
920 {
921 return releaseDescriptor;
922 }
923 }