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