View Javadoc
1   /*
2    Licensed to the Apache Software Foundation (ASF) under one
3    or more contributor license agreements.  See the NOTICE file
4    distributed with this work for additional information
5    regarding copyright ownership.  The ASF licenses this file
6    to you under the Apache License, Version 2.0 (the
7    "License"); you may not use this file except in compliance
8    with the License.  You may obtain a copy of the License at
9    
10       http://www.apache.org/licenses/LICENSE-2.0
11   
12   Unless required by applicable law or agreed to in writing,
13   software distributed under the License is distributed on an
14   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   KIND, either express or implied.  See the License for the
16   specific language governing permissions and limitations
17   under the License.
18   =================== DO NOT EDIT THIS FILE ====================
19   Generated by Modello 2.5.1,
20   any modifications will be overwritten.
21   ==============================================================
22   */
23  
24  package org.apache.maven.shared.release.config;
25  
26  /**
27   * Class ModelloReleaseDescriptor.
28   * 
29   * @version $Revision$ $Date$
30   */
31  @SuppressWarnings( "all" )
32  public class ModelloReleaseDescriptor
33      implements java.io.Serializable
34  {
35  
36        //--------------------------/
37       //- Class/Member Variables -/
38      //--------------------------/
39  
40      /**
41       * 
42       *             The name of this release configuration
43       *           .
44       */
45      private String name;
46  
47      /**
48       * 
49       *             The description of this release configuration
50       *           .
51       */
52      private String description;
53  
54      /**
55       * 
56       *             The prefix of SCM modification messages
57       *           .
58       */
59      private String ScmCommentPrefix = "[maven-release-manager] ";
60  
61      /**
62       * 
63       *             Get whether to use a shallow clone with no
64       * history or a full clone containing the full history during
65       * the
66       *             release
67       *           .
68       */
69      private boolean scmShallowClone = true;
70  
71      /**
72       * 
73       *             The SCM commit comment when setting pom.xml to
74       * release
75       *           .
76       */
77      private String scmReleaseCommitComment = "@{prefix} prepare release @{releaseLabel}";
78  
79      /**
80       * 
81       *             The SCM commit comment when setting pom.xml back
82       * to development
83       *           .
84       */
85      private String scmDevelopmentCommitComment = "@{prefix} prepare for next development iteration";
86  
87      /**
88       * 
89       *             The SCM commit comment when branching
90       *           .
91       */
92      private String scmBranchCommitComment = "@{prefix} prepare branch @{releaseLabel}";
93  
94      /**
95       * 
96       *             The SCM commit comment when rolling back
97       *           .
98       */
99      private String scmRollbackCommitComment = "@{prefix} rollback the release of @{releaseLabel}";
100 
101     /**
102      * 
103      *             This is a MavenSCM of where you're going to get
104      * the sources to make the release with.
105      *             Example:
106      * scm:svn:https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-release-plugin
107      *           .
108      */
109     private String scmSourceUrl;
110 
111     /**
112      * 
113      *             Where you are going to put your tagged sources
114      *             Example
115      * https://svn.apache.org/repos/asf/maven/plugins/tags
116      *           .
117      */
118     private String scmTagBase;
119 
120     /**
121      * 
122      *             Where you are going to put your branched sources
123      *             Example
124      * https://svn.apache.org/repos/asf/maven/plugins/branches
125      *           .
126      */
127     private String scmBranchBase;
128 
129     /**
130      * 
131      *             tag or branch name: the identifier for the
132      * tag/branch.
133      *             Example: maven-release-plugin-2.0
134      *           .
135      */
136     private String scmReleaseLabel;
137 
138     /**
139      * 
140      *             The id can be used to get the credentials by the
141      * server-id from the settings.xml
142      *           .
143      */
144     private String scmId;
145 
146     /**
147      * 
148      *             The user name to interact with the scm
149      *           .
150      */
151     private String scmUsername;
152 
153     /**
154      * 
155      *             The password for the user interacting with the
156      * scm
157      *           .
158      */
159     private String scmPassword;
160 
161     /**
162      * 
163      *             Private key for an SSH based SCM repository.
164      *           
165      */
166     private String scmPrivateKey;
167 
168     /**
169      * 
170      *             Pass phrase for the private key.
171      *           
172      */
173     private String scmPrivateKeyPassPhrase;
174 
175     /**
176      * 
177      *             Whether to use edit mode when making SCM
178      * modifications. This setting is disregarded
179      *             if the SCM does not support edit mode, or if
180      * edit mode is compulsory for the given SCM.
181      *           
182      */
183     private boolean scmUseEditMode = false;
184 
185     /**
186      * 
187      *             Relative path of the project returned by the
188      * checkout command.
189      *           
190      */
191     private String scmRelativePathProjectDirectory;
192 
193     /**
194      * 
195      *             If updateDependencies is false, dependencies
196      * version won't be updated to the next development version.
197      *           
198      */
199     private boolean updateDependencies = true;
200 
201     /**
202      * 
203      *             Whether to use the release profile that adds
204      * sources and javadocs to the released artifact, if
205      * appropriate.
206      *             If set to true, this will set the property
207      * "performRelease" to true.
208      *           
209      */
210     private boolean useReleaseProfile = true;
211 
212     /**
213      * Field activateProfiles.
214      */
215     private java.util.List<String> activateProfiles;
216 
217     /**
218      * 
219      *             The directory where the release is performed.
220      *           
221      */
222     private String workingDirectory;
223 
224     /**
225      * 
226      *             The directory where the tag will be checked out.
227      *           
228      */
229     private String checkoutDirectory = "target/checkout";
230 
231     /**
232      * 
233      *             The last completed phase.
234      *           
235      */
236     private String completedPhase;
237 
238     /**
239      * 
240      *             Whether to add the model schema to the top of
241      * the rewritten POM if it wasn't there already.
242      *             If <code>false</code> then the root element will
243      * remain untouched.
244      *           
245      */
246     private boolean addSchema = false;
247 
248     /**
249      * 
250      *             Whether to generate release POMs.
251      *           
252      */
253     private boolean generateReleasePoms = false;
254 
255     /**
256      * 
257      *             Whether to use the parent pom version for
258      * submodule versions.
259      *           
260      */
261     private boolean autoVersionSubmodules = false;
262 
263     /**
264      * 
265      *             Whether the release process is interactive and
266      * the release manager should be prompted to
267      *             confirm values, or whether the defaults are used
268      * regardless.
269      *           
270      */
271     private boolean interactive = true;
272 
273     /**
274      * 
275      *             Whether a SNAPSHOT of the release plugin is
276      * allowed.
277      *           
278      */
279     private boolean snapshotReleasePluginAllowed = false;
280 
281     /**
282      * 
283      *             Additional arguments to pass to any executed
284      * Maven process.
285      *           
286      */
287     private String additionalArguments;
288 
289     /**
290      * 
291      *             The file name of the POM to pass to any executed
292      * Maven process.
293      *           
294      */
295     private String pomFileName;
296 
297     /**
298      * Field checkModificationExcludes.
299      */
300     private java.util.List<String> checkModificationExcludes;
301 
302     /**
303      * 
304      *             The goals to execute in preparation for the
305      * release.
306      *           
307      */
308     private String preparationGoals;
309 
310     /**
311      * 
312      *             The goals to execute in on completion of
313      * preparation for the release.
314      *           
315      */
316     private String completionGoals;
317 
318     /**
319      * 
320      *             The goals to execute in perform phase for the
321      * release.
322      *           
323      */
324     private String performGoals;
325 
326     /**
327      * 
328      *             The commits must be done by modules or not. Set
329      * it to true in case of flat directory structure.
330      *           
331      */
332     private boolean commitByProject = false;
333 
334     /**
335      * 
336      *             Whether to create a branch instead of do a
337      * release.
338      *           
339      */
340     private boolean branchCreation = false;
341 
342     /**
343      * 
344      *             Whether to update branch POM versions.
345      *           
346      */
347     private boolean updateBranchVersions = false;
348 
349     /**
350      * 
351      *             Whether to update working copy POM versions.
352      *           
353      */
354     private boolean updateWorkingCopyVersions = true;
355 
356     /**
357      * 
358      *             Whether to update branch versions to SNAPSHOT.
359      *           
360      */
361     private boolean updateVersionsToSnapshot = false;
362 
363     /**
364      * 
365      *             Whether to suppress a commit of changes to the
366      * working copy before a tag or branch is created.
367      *           
368      */
369     private boolean suppressCommitBeforeTagOrBranch = false;
370 
371     /**
372      * 
373      *             Wait the specified number of seconds before
374      * creating a tag.
375      *           
376      */
377     private int waitBeforeTagging = 0;
378 
379     /**
380      * 
381      *             Should timestamped SNAPSHOT dependencies be
382      * allowed?  Default is to fail when any SNAPSHOT
383      *               dependency is found.
384      *           
385      */
386     private boolean allowTimestampedSnapshots = false;
387 
388     /**
389      * 
390      *             Default version to use for the tagged release or
391      * the new branch.
392      *           
393      */
394     private String defaultReleaseVersion;
395 
396     /**
397      * 
398      *             Default version to use for new working copy.
399      *           
400      */
401     private String defaultDevelopmentVersion;
402 
403     /**
404      * 
405      *             The role-hint for the VersionPolicy
406      * implementation used to calculate the project versions.
407      *           
408      */
409     private String projectVersionPolicyId = "default";
410 
411     /**
412      * 
413      *             The optional config string for the VersionPolicy
414      * implementation used to calculate the project versions.
415      *             The format of this depends on the specific
416      * VersionPolicy that is used.
417      *           
418      */
419     private Object projectVersionPolicyConfig;
420 
421     /**
422      * 
423      *             The role-hint for the NamingPolicy
424      * implementation used to calculate the project branch and tag
425      * names.
426      *           
427      */
428     private String projectNamingPolicyId;
429 
430     /**
431      * 
432      *             The role-hint for the release Strategy
433      * implementation.
434      *           
435      */
436     private String releaseStrategyId = "default";
437 
438     /**
439      * 
440      *             NOTE : currently only implemented with svn scm.
441      * Enable a workaround to prevent issue due to svn client &gt;
442      * 1.5.0
443      *             (https://issues.apache.org/jira/browse/SCM-406)
444      *           .
445      */
446     private boolean remoteTagging = false;
447 
448     /**
449      * 
450      *             NOTE : currently only implemented with svn scm.
451      * It contains the revision of the committed released pom to
452      * remotely tag
453      *             the source code with this revision.
454      *           
455      */
456     private String scmReleasedPomRevision;
457 
458     /**
459      * 
460      *             Should distributed changes be pushed to the
461      * central repository?
462      *             For many distributed SCMs like Git, a change
463      * like a commit is only stored in your local copy of the
464      * repository.
465      *             Pushing the change allows your to more easily
466      * share it with other users.
467      *           
468      */
469     private boolean pushChanges = true;
470 
471     /**
472      * 
473      *             If the scm provider should use local checkouts
474      * via file://${basedir}
475      *             instead of doing a clean checkout over the
476      * network.
477      *             This is very helpful for releasing large
478      * projects!
479      *           
480      */
481     private boolean localCheckout = false;
482 
483     /**
484      * 
485      *             Specifies the format for generating a tag name.
486      * Property expansion is
487      *             used with the optional prefix of project, where
488      * properties are delimited
489      *             with @{ and }
490      *           .
491      */
492     private String scmTagNameFormat;
493 
494     /**
495      * 
496      *             Some SCMs may require a Work Item or a Task to
497      * allow the changes to be pushed or delivered.
498      *             This field allows you to specify that Work Item
499      * or Task. It is optional, and only relevant
500      *             if pushChanges is true.
501      *           
502      */
503     private String workItem;
504 
505     /**
506      * 
507      *             Specifies whether unresolved SNAPSHOT
508      * dependencies are automatically resolved.
509      *             If set, it is used as the answer to use when
510      * being asked how unresolved SNAPSHOT 
511      *             dependencies should be resolved:
512      *             <ul>
513      *             <li>"all" or "0": resolve all kinds of
514      * snapshots, ie. project, plugin, report and extension
515      * dependencies</li>
516      *             <li>"dependencies" or "1": resolve project
517      * dependencies</li>
518      *             <li>"plugins" or "2": resolve plugin
519      * dependencies</li>
520      *             <li>"reports" or "3": resolve report
521      * dependencies</li>
522      *             <li>"extensions" or "4": resolve extension
523      * dependencies</li>
524      *             </ul>
525      *             Additionally this implies that the default
526      * values for the dependency's release and next
527      *             development version are used.
528      *           
529      */
530     private String autoResolveSnapshots;
531 
532     /**
533      * 
534      *             Enable the "--pin-externals" option in svn copy
535      * commands which is new in Subversion 1.9.
536      *             NOTE : Currently only implemented with
537      * Subversion.
538      *             (https://issues.apache.org/jira/browse/SCM-805)
539      *           .
540      */
541     private boolean pinExternals = false;
542 
543     /**
544      * 
545      *             If the scm provider should use sign tags, for
546      * example for git-exe the '--sign' argument would be used.
547      *           
548      */
549     private boolean scmSignTags = false;
550 
551     /**
552      * 
553      *             Specifies the line separator to use in the
554      * pom.xml.
555      *           
556      */
557     private String lineSeparator;
558 
559     /**
560      * Field modelEncoding.
561      */
562     private String modelEncoding = "UTF-8";
563 
564 
565       //-----------/
566      //- Methods -/
567     //-----------/
568 
569     /**
570      * Method addActivateProfile.
571      * 
572      * @param string a string object.
573      */
574     public void addActivateProfile( String string )
575     {
576         getActivateProfiles().add( string );
577     } //-- void addActivateProfile( String )
578 
579     /**
580      * Method addCheckModificationExclude.
581      * 
582      * @param string a string object.
583      */
584     public void addCheckModificationExclude( String string )
585     {
586         getCheckModificationExcludes().add( string );
587     } //-- void addCheckModificationExclude( String )
588 
589     /**
590      * Method getActivateProfiles.
591      * 
592      * @return List
593      */
594     public java.util.List<String> getActivateProfiles()
595     {
596         if ( this.activateProfiles == null )
597         {
598             this.activateProfiles = new java.util.ArrayList<String>();
599         }
600 
601         return this.activateProfiles;
602     } //-- java.util.List<String> getActivateProfiles()
603 
604     /**
605      * Get additional arguments to pass to any executed Maven
606      * process.
607      * 
608      * @return String
609      */
610     public String getAdditionalArguments()
611     {
612         return this.additionalArguments;
613     } //-- String getAdditionalArguments()
614 
615     /**
616      * Get specifies whether unresolved SNAPSHOT dependencies are
617      * automatically resolved.
618      *             If set, it is used as the answer to use when
619      * being asked how unresolved SNAPSHOT 
620      *             dependencies should be resolved:
621      *             <ul>
622      *             <li>"all" or "0": resolve all kinds of
623      * snapshots, ie. project, plugin, report and extension
624      * dependencies</li>
625      *             <li>"dependencies" or "1": resolve project
626      * dependencies</li>
627      *             <li>"plugins" or "2": resolve plugin
628      * dependencies</li>
629      *             <li>"reports" or "3": resolve report
630      * dependencies</li>
631      *             <li>"extensions" or "4": resolve extension
632      * dependencies</li>
633      *             </ul>
634      *             Additionally this implies that the default
635      * values for the dependency's release and next
636      *             development version are used.
637      * 
638      * @return String
639      */
640     public String getAutoResolveSnapshots()
641     {
642         return this.autoResolveSnapshots;
643     } //-- String getAutoResolveSnapshots()
644 
645     /**
646      * Method getCheckModificationExcludes.
647      * 
648      * @return List
649      */
650     public java.util.List<String> getCheckModificationExcludes()
651     {
652         if ( this.checkModificationExcludes == null )
653         {
654             this.checkModificationExcludes = new java.util.ArrayList<String>();
655         }
656 
657         return this.checkModificationExcludes;
658     } //-- java.util.List<String> getCheckModificationExcludes()
659 
660     /**
661      * Get the directory where the tag will be checked out.
662      * 
663      * @return String
664      */
665     public String getCheckoutDirectory()
666     {
667         return this.checkoutDirectory;
668     } //-- String getCheckoutDirectory()
669 
670     /**
671      * Get the last completed phase.
672      * 
673      * @return String
674      */
675     public String getCompletedPhase()
676     {
677         return this.completedPhase;
678     } //-- String getCompletedPhase()
679 
680     /**
681      * Get the goals to execute in on completion of preparation for
682      * the release.
683      * 
684      * @return String
685      */
686     public String getCompletionGoals()
687     {
688         return this.completionGoals;
689     } //-- String getCompletionGoals()
690 
691     /**
692      * Get default version to use for new working copy.
693      * 
694      * @return String
695      */
696     public String getDefaultDevelopmentVersion()
697     {
698         return this.defaultDevelopmentVersion;
699     } //-- String getDefaultDevelopmentVersion()
700 
701     /**
702      * Get default version to use for the tagged release or the new
703      * branch.
704      * 
705      * @return String
706      */
707     public String getDefaultReleaseVersion()
708     {
709         return this.defaultReleaseVersion;
710     } //-- String getDefaultReleaseVersion()
711 
712     /**
713      * Get the description of this release configuration.
714      * 
715      * @return String
716      */
717     public String getDescription()
718     {
719         return this.description;
720     } //-- String getDescription()
721 
722     /**
723      * Get specifies the line separator to use in the pom.xml.
724      * 
725      * @return String
726      */
727     public String getLineSeparator()
728     {
729         return this.lineSeparator;
730     } //-- String getLineSeparator()
731 
732     /**
733      * Get the modelEncoding field.
734      * 
735      * @return String
736      */
737     public String getModelEncoding()
738     {
739         return this.modelEncoding;
740     } //-- String getModelEncoding()
741 
742     /**
743      * Get the name of this release configuration.
744      * 
745      * @return String
746      */
747     public String getName()
748     {
749         return this.name;
750     } //-- String getName()
751 
752     /**
753      * Get the goals to execute in perform phase for the release.
754      * 
755      * @return String
756      */
757     public String getPerformGoals()
758     {
759         return this.performGoals;
760     } //-- String getPerformGoals()
761 
762     /**
763      * Get the file name of the POM to pass to any executed Maven
764      * process.
765      * 
766      * @return String
767      */
768     public String getPomFileName()
769     {
770         return this.pomFileName;
771     } //-- String getPomFileName()
772 
773     /**
774      * Get the goals to execute in preparation for the release.
775      * 
776      * @return String
777      */
778     public String getPreparationGoals()
779     {
780         return this.preparationGoals;
781     } //-- String getPreparationGoals()
782 
783     /**
784      * Get the role-hint for the NamingPolicy implementation used
785      * to calculate the project branch and tag names.
786      * 
787      * @return String
788      */
789     public String getProjectNamingPolicyId()
790     {
791         return this.projectNamingPolicyId;
792     } //-- String getProjectNamingPolicyId()
793 
794     /**
795      * Get the optional config string for the VersionPolicy
796      * implementation used to calculate the project versions.
797      *             The format of this depends on the specific
798      * VersionPolicy that is used.
799      * 
800      * @return Object
801      */
802     public Object getProjectVersionPolicyConfig()
803     {
804         return this.projectVersionPolicyConfig;
805     } //-- Object getProjectVersionPolicyConfig()
806 
807     /**
808      * Get the role-hint for the VersionPolicy implementation used
809      * to calculate the project versions.
810      * 
811      * @return String
812      */
813     public String getProjectVersionPolicyId()
814     {
815         return this.projectVersionPolicyId;
816     } //-- String getProjectVersionPolicyId()
817 
818     /**
819      * Get the role-hint for the release Strategy implementation.
820      * 
821      * @return String
822      */
823     public String getReleaseStrategyId()
824     {
825         return this.releaseStrategyId;
826     } //-- String getReleaseStrategyId()
827 
828     /**
829      * Get where you are going to put your branched sources
830      *             Example
831      * https://svn.apache.org/repos/asf/maven/plugins/branches.
832      * 
833      * @return String
834      */
835     public String getScmBranchBase()
836     {
837         return this.scmBranchBase;
838     } //-- String getScmBranchBase()
839 
840     /**
841      * Get the SCM commit comment when branching.
842      * 
843      * @return String
844      */
845     public String getScmBranchCommitComment()
846     {
847         return this.scmBranchCommitComment;
848     } //-- String getScmBranchCommitComment()
849 
850     /**
851      * Get the prefix of SCM modification messages.
852      * 
853      * @return String
854      */
855     public String getScmCommentPrefix()
856     {
857         return this.ScmCommentPrefix;
858     } //-- String getScmCommentPrefix()
859 
860     /**
861      * Get the SCM commit comment when setting pom.xml back to
862      * development.
863      * 
864      * @return String
865      */
866     public String getScmDevelopmentCommitComment()
867     {
868         return this.scmDevelopmentCommitComment;
869     } //-- String getScmDevelopmentCommitComment()
870 
871     /**
872      * Get the id can be used to get the credentials by the
873      * server-id from the settings.xml.
874      * 
875      * @return String
876      */
877     public String getScmId()
878     {
879         return this.scmId;
880     } //-- String getScmId()
881 
882     /**
883      * Get the password for the user interacting with the scm.
884      * 
885      * @return String
886      */
887     public String getScmPassword()
888     {
889         return this.scmPassword;
890     } //-- String getScmPassword()
891 
892     /**
893      * Get private key for an SSH based SCM repository.
894      * 
895      * @return String
896      */
897     public String getScmPrivateKey()
898     {
899         return this.scmPrivateKey;
900     } //-- String getScmPrivateKey()
901 
902     /**
903      * Get pass phrase for the private key.
904      * 
905      * @return String
906      */
907     public String getScmPrivateKeyPassPhrase()
908     {
909         return this.scmPrivateKeyPassPhrase;
910     } //-- String getScmPrivateKeyPassPhrase()
911 
912     /**
913      * Get relative path of the project returned by the checkout
914      * command.
915      * 
916      * @return String
917      */
918     public String getScmRelativePathProjectDirectory()
919     {
920         return this.scmRelativePathProjectDirectory;
921     } //-- String getScmRelativePathProjectDirectory()
922 
923     /**
924      * Get the SCM commit comment when setting pom.xml to release.
925      * 
926      * @return String
927      */
928     public String getScmReleaseCommitComment()
929     {
930         return this.scmReleaseCommitComment;
931     } //-- String getScmReleaseCommitComment()
932 
933     /**
934      * Get tag or branch name: the identifier for the tag/branch.
935      *             Example: maven-release-plugin-2.0.
936      * 
937      * @return String
938      */
939     public String getScmReleaseLabel()
940     {
941         return this.scmReleaseLabel;
942     } //-- String getScmReleaseLabel()
943 
944     /**
945      * Get nOTE : currently only implemented with svn scm. It
946      * contains the revision of the committed released pom to
947      * remotely tag
948      *             the source code with this revision.
949      * 
950      * @return String
951      */
952     public String getScmReleasedPomRevision()
953     {
954         return this.scmReleasedPomRevision;
955     } //-- String getScmReleasedPomRevision()
956 
957     /**
958      * Get the SCM commit comment when rolling back.
959      * 
960      * @return String
961      */
962     public String getScmRollbackCommitComment()
963     {
964         return this.scmRollbackCommitComment;
965     } //-- String getScmRollbackCommitComment()
966 
967     /**
968      * Get this is a MavenSCM of where you're going to get the
969      * sources to make the release with.
970      *             Example:
971      * scm:svn:https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-release-plugin.
972      * 
973      * @return String
974      */
975     public String getScmSourceUrl()
976     {
977         return this.scmSourceUrl;
978     } //-- String getScmSourceUrl()
979 
980     /**
981      * Get where you are going to put your tagged sources
982      *             Example
983      * https://svn.apache.org/repos/asf/maven/plugins/tags.
984      * 
985      * @return String
986      */
987     public String getScmTagBase()
988     {
989         return this.scmTagBase;
990     } //-- String getScmTagBase()
991 
992     /**
993      * Get specifies the format for generating a tag name. Property
994      * expansion is
995      *             used with the optional prefix of project, where
996      * properties are delimited
997      *             with @{ and }.
998      * 
999      * @return String
1000      */
1001     public String getScmTagNameFormat()
1002     {
1003         return this.scmTagNameFormat;
1004     } //-- String getScmTagNameFormat()
1005 
1006     /**
1007      * Get the user name to interact with the scm.
1008      * 
1009      * @return String
1010      */
1011     public String getScmUsername()
1012     {
1013         return this.scmUsername;
1014     } //-- String getScmUsername()
1015 
1016     /**
1017      * Get wait the specified number of seconds before creating a
1018      * tag.
1019      * 
1020      * @return int
1021      */
1022     public int getWaitBeforeTagging()
1023     {
1024         return this.waitBeforeTagging;
1025     } //-- int getWaitBeforeTagging()
1026 
1027     /**
1028      * Get some SCMs may require a Work Item or a Task to allow the
1029      * changes to be pushed or delivered.
1030      *             This field allows you to specify that Work Item
1031      * or Task. It is optional, and only relevant
1032      *             if pushChanges is true.
1033      * 
1034      * @return String
1035      */
1036     public String getWorkItem()
1037     {
1038         return this.workItem;
1039     } //-- String getWorkItem()
1040 
1041     /**
1042      * Get the directory where the release is performed.
1043      * 
1044      * @return String
1045      */
1046     public String getWorkingDirectory()
1047     {
1048         return this.workingDirectory;
1049     } //-- String getWorkingDirectory()
1050 
1051     /**
1052      * Get whether to add the model schema to the top of the
1053      * rewritten POM if it wasn't there already.
1054      *             If <code>false</code> then the root element will
1055      * remain untouched.
1056      * 
1057      * @return boolean
1058      */
1059     public boolean isAddSchema()
1060     {
1061         return this.addSchema;
1062     } //-- boolean isAddSchema()
1063 
1064     /**
1065      * Get should timestamped SNAPSHOT dependencies be allowed? 
1066      * Default is to fail when any SNAPSHOT
1067      *               dependency is found.
1068      * 
1069      * @return boolean
1070      */
1071     public boolean isAllowTimestampedSnapshots()
1072     {
1073         return this.allowTimestampedSnapshots;
1074     } //-- boolean isAllowTimestampedSnapshots()
1075 
1076     /**
1077      * Get whether to use the parent pom version for submodule
1078      * versions.
1079      * 
1080      * @return boolean
1081      */
1082     public boolean isAutoVersionSubmodules()
1083     {
1084         return this.autoVersionSubmodules;
1085     } //-- boolean isAutoVersionSubmodules()
1086 
1087     /**
1088      * Get whether to create a branch instead of do a release.
1089      * 
1090      * @return boolean
1091      */
1092     public boolean isBranchCreation()
1093     {
1094         return this.branchCreation;
1095     } //-- boolean isBranchCreation()
1096 
1097     /**
1098      * Get the commits must be done by modules or not. Set it to
1099      * true in case of flat directory structure.
1100      * 
1101      * @return boolean
1102      */
1103     public boolean isCommitByProject()
1104     {
1105         return this.commitByProject;
1106     } //-- boolean isCommitByProject()
1107 
1108     /**
1109      * Get whether to generate release POMs.
1110      * 
1111      * @return boolean
1112      */
1113     public boolean isGenerateReleasePoms()
1114     {
1115         return this.generateReleasePoms;
1116     } //-- boolean isGenerateReleasePoms()
1117 
1118     /**
1119      * Get whether the release process is interactive and the
1120      * release manager should be prompted to
1121      *             confirm values, or whether the defaults are used
1122      * regardless.
1123      * 
1124      * @return boolean
1125      */
1126     public boolean isInteractive()
1127     {
1128         return this.interactive;
1129     } //-- boolean isInteractive()
1130 
1131     /**
1132      * Get if the scm provider should use local checkouts via
1133      * file://${basedir}
1134      *             instead of doing a clean checkout over the
1135      * network.
1136      *             This is very helpful for releasing large
1137      * projects!
1138      * 
1139      * @return boolean
1140      */
1141     public boolean isLocalCheckout()
1142     {
1143         return this.localCheckout;
1144     } //-- boolean isLocalCheckout()
1145 
1146     /**
1147      * Get enable the "--pin-externals" option in svn copy commands
1148      * which is new in Subversion 1.9.
1149      *             NOTE : Currently only implemented with
1150      * Subversion.
1151      *             (https://issues.apache.org/jira/browse/SCM-805).
1152      * 
1153      * @return boolean
1154      */
1155     public boolean isPinExternals()
1156     {
1157         return this.pinExternals;
1158     } //-- boolean isPinExternals()
1159 
1160     /**
1161      * Get should distributed changes be pushed to the central
1162      * repository?
1163      *             For many distributed SCMs like Git, a change
1164      * like a commit is only stored in your local copy of the
1165      * repository.
1166      *             Pushing the change allows your to more easily
1167      * share it with other users.
1168      * 
1169      * @return boolean
1170      */
1171     public boolean isPushChanges()
1172     {
1173         return this.pushChanges;
1174     } //-- boolean isPushChanges()
1175 
1176     /**
1177      * Get nOTE : currently only implemented with svn scm. Enable a
1178      * workaround to prevent issue due to svn client &gt; 1.5.0
1179      *             (https://issues.apache.org/jira/browse/SCM-406).
1180      * 
1181      * @return boolean
1182      */
1183     public boolean isRemoteTagging()
1184     {
1185         return this.remoteTagging;
1186     } //-- boolean isRemoteTagging()
1187 
1188     /**
1189      * Get get whether to use a shallow clone with no history or a
1190      * full clone containing the full history during the
1191      *             release.
1192      * 
1193      * @return boolean
1194      */
1195     public boolean isScmShallowClone()
1196     {
1197         return this.scmShallowClone;
1198     } //-- boolean isScmShallowClone()
1199 
1200     /**
1201      * Get if the scm provider should use sign tags, for example
1202      * for git-exe the '--sign' argument would be used.
1203      * 
1204      * @return boolean
1205      */
1206     public boolean isScmSignTags()
1207     {
1208         return this.scmSignTags;
1209     } //-- boolean isScmSignTags()
1210 
1211     /**
1212      * Get whether to use edit mode when making SCM modifications.
1213      * This setting is disregarded
1214      *             if the SCM does not support edit mode, or if
1215      * edit mode is compulsory for the given SCM.
1216      * 
1217      * @return boolean
1218      */
1219     public boolean isScmUseEditMode()
1220     {
1221         return this.scmUseEditMode;
1222     } //-- boolean isScmUseEditMode()
1223 
1224     /**
1225      * Get whether a SNAPSHOT of the release plugin is allowed.
1226      * 
1227      * @return boolean
1228      */
1229     public boolean isSnapshotReleasePluginAllowed()
1230     {
1231         return this.snapshotReleasePluginAllowed;
1232     } //-- boolean isSnapshotReleasePluginAllowed()
1233 
1234     /**
1235      * Get whether to suppress a commit of changes to the working
1236      * copy before a tag or branch is created.
1237      * 
1238      * @return boolean
1239      */
1240     public boolean isSuppressCommitBeforeTagOrBranch()
1241     {
1242         return this.suppressCommitBeforeTagOrBranch;
1243     } //-- boolean isSuppressCommitBeforeTagOrBranch()
1244 
1245     /**
1246      * Get whether to update branch POM versions.
1247      * 
1248      * @return boolean
1249      */
1250     public boolean isUpdateBranchVersions()
1251     {
1252         return this.updateBranchVersions;
1253     } //-- boolean isUpdateBranchVersions()
1254 
1255     /**
1256      * Get if updateDependencies is false, dependencies version
1257      * won't be updated to the next development version.
1258      * 
1259      * @return boolean
1260      */
1261     public boolean isUpdateDependencies()
1262     {
1263         return this.updateDependencies;
1264     } //-- boolean isUpdateDependencies()
1265 
1266     /**
1267      * Get whether to update branch versions to SNAPSHOT.
1268      * 
1269      * @return boolean
1270      */
1271     public boolean isUpdateVersionsToSnapshot()
1272     {
1273         return this.updateVersionsToSnapshot;
1274     } //-- boolean isUpdateVersionsToSnapshot()
1275 
1276     /**
1277      * Get whether to update working copy POM versions.
1278      * 
1279      * @return boolean
1280      */
1281     public boolean isUpdateWorkingCopyVersions()
1282     {
1283         return this.updateWorkingCopyVersions;
1284     } //-- boolean isUpdateWorkingCopyVersions()
1285 
1286     /**
1287      * Get whether to use the release profile that adds sources and
1288      * javadocs to the released artifact, if appropriate.
1289      *             If set to true, this will set the property
1290      * "performRelease" to true.
1291      * 
1292      * @return boolean
1293      */
1294     public boolean isUseReleaseProfile()
1295     {
1296         return this.useReleaseProfile;
1297     } //-- boolean isUseReleaseProfile()
1298 
1299     /**
1300      * Method removeActivateProfile.
1301      * 
1302      * @param string a string object.
1303      */
1304     public void removeActivateProfile( String string )
1305     {
1306         getActivateProfiles().remove( string );
1307     } //-- void removeActivateProfile( String )
1308 
1309     /**
1310      * Method removeCheckModificationExclude.
1311      * 
1312      * @param string a string object.
1313      */
1314     public void removeCheckModificationExclude( String string )
1315     {
1316         getCheckModificationExcludes().remove( string );
1317     } //-- void removeCheckModificationExclude( String )
1318 
1319     /**
1320      * Set list of profiles to activate.
1321      * 
1322      * @param activateProfiles a activateProfiles object.
1323      */
1324     public void setActivateProfiles( java.util.List<String> activateProfiles )
1325     {
1326         this.activateProfiles = activateProfiles;
1327     } //-- void setActivateProfiles( java.util.List )
1328 
1329     /**
1330      * Set whether to add the model schema to the top of the
1331      * rewritten POM if it wasn't there already.
1332      *             If <code>false</code> then the root element will
1333      * remain untouched.
1334      * 
1335      * @param addSchema a addSchema object.
1336      */
1337     public void setAddSchema( boolean addSchema )
1338     {
1339         this.addSchema = addSchema;
1340     } //-- void setAddSchema( boolean )
1341 
1342     /**
1343      * Set additional arguments to pass to any executed Maven
1344      * process.
1345      * 
1346      * @param additionalArguments a additionalArguments object.
1347      */
1348     public void setAdditionalArguments( String additionalArguments )
1349     {
1350         this.additionalArguments = additionalArguments;
1351     } //-- void setAdditionalArguments( String )
1352 
1353     /**
1354      * Set should timestamped SNAPSHOT dependencies be allowed? 
1355      * Default is to fail when any SNAPSHOT
1356      *               dependency is found.
1357      * 
1358      * @param allowTimestampedSnapshots a allowTimestampedSnapshots
1359      * object.
1360      */
1361     public void setAllowTimestampedSnapshots( boolean allowTimestampedSnapshots )
1362     {
1363         this.allowTimestampedSnapshots = allowTimestampedSnapshots;
1364     } //-- void setAllowTimestampedSnapshots( boolean )
1365 
1366     /**
1367      * Set specifies whether unresolved SNAPSHOT dependencies are
1368      * automatically resolved.
1369      *             If set, it is used as the answer to use when
1370      * being asked how unresolved SNAPSHOT 
1371      *             dependencies should be resolved:
1372      *             <ul>
1373      *             <li>"all" or "0": resolve all kinds of
1374      * snapshots, ie. project, plugin, report and extension
1375      * dependencies</li>
1376      *             <li>"dependencies" or "1": resolve project
1377      * dependencies</li>
1378      *             <li>"plugins" or "2": resolve plugin
1379      * dependencies</li>
1380      *             <li>"reports" or "3": resolve report
1381      * dependencies</li>
1382      *             <li>"extensions" or "4": resolve extension
1383      * dependencies</li>
1384      *             </ul>
1385      *             Additionally this implies that the default
1386      * values for the dependency's release and next
1387      *             development version are used.
1388      * 
1389      * @param autoResolveSnapshots a autoResolveSnapshots object.
1390      */
1391     public void setAutoResolveSnapshots( String autoResolveSnapshots )
1392     {
1393         this.autoResolveSnapshots = autoResolveSnapshots;
1394     } //-- void setAutoResolveSnapshots( String )
1395 
1396     /**
1397      * Set whether to use the parent pom version for submodule
1398      * versions.
1399      * 
1400      * @param autoVersionSubmodules a autoVersionSubmodules object.
1401      */
1402     public void setAutoVersionSubmodules( boolean autoVersionSubmodules )
1403     {
1404         this.autoVersionSubmodules = autoVersionSubmodules;
1405     } //-- void setAutoVersionSubmodules( boolean )
1406 
1407     /**
1408      * Set whether to create a branch instead of do a release.
1409      * 
1410      * @param branchCreation a branchCreation object.
1411      */
1412     public void setBranchCreation( boolean branchCreation )
1413     {
1414         this.branchCreation = branchCreation;
1415     } //-- void setBranchCreation( boolean )
1416 
1417     /**
1418      * Set in some exceptions you want to allow changes to the
1419      * working copy. Changes
1420      *             to files listed here will not make the
1421      * ScmCheckModificationsPhase fail.
1422      * 
1423      * @param checkModificationExcludes a checkModificationExcludes
1424      * object.
1425      */
1426     public void setCheckModificationExcludes( java.util.List<String> checkModificationExcludes )
1427     {
1428         this.checkModificationExcludes = checkModificationExcludes;
1429     } //-- void setCheckModificationExcludes( java.util.List )
1430 
1431     /**
1432      * Set the directory where the tag will be checked out.
1433      * 
1434      * @param checkoutDirectory a checkoutDirectory object.
1435      */
1436     public void setCheckoutDirectory( String checkoutDirectory )
1437     {
1438         this.checkoutDirectory = checkoutDirectory;
1439     } //-- void setCheckoutDirectory( String )
1440 
1441     /**
1442      * Set the commits must be done by modules or not. Set it to
1443      * true in case of flat directory structure.
1444      * 
1445      * @param commitByProject a commitByProject object.
1446      */
1447     public void setCommitByProject( boolean commitByProject )
1448     {
1449         this.commitByProject = commitByProject;
1450     } //-- void setCommitByProject( boolean )
1451 
1452     /**
1453      * Set the last completed phase.
1454      * 
1455      * @param completedPhase a completedPhase object.
1456      */
1457     public void setCompletedPhase( String completedPhase )
1458     {
1459         this.completedPhase = completedPhase;
1460     } //-- void setCompletedPhase( String )
1461 
1462     /**
1463      * Set the goals to execute in on completion of preparation for
1464      * the release.
1465      * 
1466      * @param completionGoals a completionGoals object.
1467      */
1468     public void setCompletionGoals( String completionGoals )
1469     {
1470         this.completionGoals = completionGoals;
1471     } //-- void setCompletionGoals( String )
1472 
1473     /**
1474      * Set default version to use for new working copy.
1475      * 
1476      * @param defaultDevelopmentVersion a defaultDevelopmentVersion
1477      * object.
1478      */
1479     public void setDefaultDevelopmentVersion( String defaultDevelopmentVersion )
1480     {
1481         this.defaultDevelopmentVersion = defaultDevelopmentVersion;
1482     } //-- void setDefaultDevelopmentVersion( String )
1483 
1484     /**
1485      * Set default version to use for the tagged release or the new
1486      * branch.
1487      * 
1488      * @param defaultReleaseVersion a defaultReleaseVersion object.
1489      */
1490     public void setDefaultReleaseVersion( String defaultReleaseVersion )
1491     {
1492         this.defaultReleaseVersion = defaultReleaseVersion;
1493     } //-- void setDefaultReleaseVersion( String )
1494 
1495     /**
1496      * Set the description of this release configuration.
1497      * 
1498      * @param description a description object.
1499      */
1500     public void setDescription( String description )
1501     {
1502         this.description = description;
1503     } //-- void setDescription( String )
1504 
1505     /**
1506      * Set whether to generate release POMs.
1507      * 
1508      * @param generateReleasePoms a generateReleasePoms object.
1509      */
1510     public void setGenerateReleasePoms( boolean generateReleasePoms )
1511     {
1512         this.generateReleasePoms = generateReleasePoms;
1513     } //-- void setGenerateReleasePoms( boolean )
1514 
1515     /**
1516      * Set whether the release process is interactive and the
1517      * release manager should be prompted to
1518      *             confirm values, or whether the defaults are used
1519      * regardless.
1520      * 
1521      * @param interactive a interactive object.
1522      */
1523     public void setInteractive( boolean interactive )
1524     {
1525         this.interactive = interactive;
1526     } //-- void setInteractive( boolean )
1527 
1528     /**
1529      * Set specifies the line separator to use in the pom.xml.
1530      * 
1531      * @param lineSeparator a lineSeparator object.
1532      */
1533     public void setLineSeparator( String lineSeparator )
1534     {
1535         this.lineSeparator = lineSeparator;
1536     } //-- void setLineSeparator( String )
1537 
1538     /**
1539      * Set if the scm provider should use local checkouts via
1540      * file://${basedir}
1541      *             instead of doing a clean checkout over the
1542      * network.
1543      *             This is very helpful for releasing large
1544      * projects!
1545      * 
1546      * @param localCheckout a localCheckout object.
1547      */
1548     public void setLocalCheckout( boolean localCheckout )
1549     {
1550         this.localCheckout = localCheckout;
1551     } //-- void setLocalCheckout( boolean )
1552 
1553     /**
1554      * Set the modelEncoding field.
1555      * 
1556      * @param modelEncoding a modelEncoding object.
1557      */
1558     public void setModelEncoding( String modelEncoding )
1559     {
1560         this.modelEncoding = modelEncoding;
1561     } //-- void setModelEncoding( String )
1562 
1563     /**
1564      * Set the name of this release configuration.
1565      * 
1566      * @param name a name object.
1567      */
1568     public void setName( String name )
1569     {
1570         this.name = name;
1571     } //-- void setName( String )
1572 
1573     /**
1574      * Set the goals to execute in perform phase for the release.
1575      * 
1576      * @param performGoals a performGoals object.
1577      */
1578     public void setPerformGoals( String performGoals )
1579     {
1580         this.performGoals = performGoals;
1581     } //-- void setPerformGoals( String )
1582 
1583     /**
1584      * Set enable the "--pin-externals" option in svn copy commands
1585      * which is new in Subversion 1.9.
1586      *             NOTE : Currently only implemented with
1587      * Subversion.
1588      *             (https://issues.apache.org/jira/browse/SCM-805).
1589      * 
1590      * @param pinExternals a pinExternals object.
1591      */
1592     public void setPinExternals( boolean pinExternals )
1593     {
1594         this.pinExternals = pinExternals;
1595     } //-- void setPinExternals( boolean )
1596 
1597     /**
1598      * Set the file name of the POM to pass to any executed Maven
1599      * process.
1600      * 
1601      * @param pomFileName a pomFileName object.
1602      */
1603     public void setPomFileName( String pomFileName )
1604     {
1605         this.pomFileName = pomFileName;
1606     } //-- void setPomFileName( String )
1607 
1608     /**
1609      * Set the goals to execute in preparation for the release.
1610      * 
1611      * @param preparationGoals a preparationGoals object.
1612      */
1613     public void setPreparationGoals( String preparationGoals )
1614     {
1615         this.preparationGoals = preparationGoals;
1616     } //-- void setPreparationGoals( String )
1617 
1618     /**
1619      * Set the role-hint for the NamingPolicy implementation used
1620      * to calculate the project branch and tag names.
1621      * 
1622      * @param projectNamingPolicyId a projectNamingPolicyId object.
1623      */
1624     public void setProjectNamingPolicyId( String projectNamingPolicyId )
1625     {
1626         this.projectNamingPolicyId = projectNamingPolicyId;
1627     } //-- void setProjectNamingPolicyId( String )
1628 
1629     /**
1630      * Set the optional config string for the VersionPolicy
1631      * implementation used to calculate the project versions.
1632      *             The format of this depends on the specific
1633      * VersionPolicy that is used.
1634      * 
1635      * @param projectVersionPolicyConfig a
1636      * projectVersionPolicyConfig object.
1637      */
1638     public void setProjectVersionPolicyConfig( Object projectVersionPolicyConfig )
1639     {
1640         this.projectVersionPolicyConfig = projectVersionPolicyConfig;
1641     } //-- void setProjectVersionPolicyConfig( Object )
1642 
1643     /**
1644      * Set the role-hint for the VersionPolicy implementation used
1645      * to calculate the project versions.
1646      * 
1647      * @param projectVersionPolicyId a projectVersionPolicyId object
1648      */
1649     public void setProjectVersionPolicyId( String projectVersionPolicyId )
1650     {
1651         this.projectVersionPolicyId = projectVersionPolicyId;
1652     } //-- void setProjectVersionPolicyId( String )
1653 
1654     /**
1655      * Set should distributed changes be pushed to the central
1656      * repository?
1657      *             For many distributed SCMs like Git, a change
1658      * like a commit is only stored in your local copy of the
1659      * repository.
1660      *             Pushing the change allows your to more easily
1661      * share it with other users.
1662      * 
1663      * @param pushChanges a pushChanges object.
1664      */
1665     public void setPushChanges( boolean pushChanges )
1666     {
1667         this.pushChanges = pushChanges;
1668     } //-- void setPushChanges( boolean )
1669 
1670     /**
1671      * Set the role-hint for the release Strategy implementation.
1672      * 
1673      * @param releaseStrategyId a releaseStrategyId object.
1674      */
1675     public void setReleaseStrategyId( String releaseStrategyId )
1676     {
1677         this.releaseStrategyId = releaseStrategyId;
1678     } //-- void setReleaseStrategyId( String )
1679 
1680     /**
1681      * Set nOTE : currently only implemented with svn scm. Enable a
1682      * workaround to prevent issue due to svn client &gt; 1.5.0
1683      *             (https://issues.apache.org/jira/browse/SCM-406).
1684      * 
1685      * @param remoteTagging a remoteTagging object.
1686      */
1687     public void setRemoteTagging( boolean remoteTagging )
1688     {
1689         this.remoteTagging = remoteTagging;
1690     } //-- void setRemoteTagging( boolean )
1691 
1692     /**
1693      * Set where you are going to put your branched sources
1694      *             Example
1695      * https://svn.apache.org/repos/asf/maven/plugins/branches.
1696      * 
1697      * @param scmBranchBase a scmBranchBase object.
1698      */
1699     public void setScmBranchBase( String scmBranchBase )
1700     {
1701         this.scmBranchBase = scmBranchBase;
1702     } //-- void setScmBranchBase( String )
1703 
1704     /**
1705      * Set the SCM commit comment when branching.
1706      * 
1707      * @param scmBranchCommitComment a scmBranchCommitComment object
1708      */
1709     public void setScmBranchCommitComment( String scmBranchCommitComment )
1710     {
1711         this.scmBranchCommitComment = scmBranchCommitComment;
1712     } //-- void setScmBranchCommitComment( String )
1713 
1714     /**
1715      * Set the prefix of SCM modification messages.
1716      * 
1717      * @param ScmCommentPrefix a ScmCommentPrefix object.
1718      */
1719     public void setScmCommentPrefix( String ScmCommentPrefix )
1720     {
1721         this.ScmCommentPrefix = ScmCommentPrefix;
1722     } //-- void setScmCommentPrefix( String )
1723 
1724     /**
1725      * Set the SCM commit comment when setting pom.xml back to
1726      * development.
1727      * 
1728      * @param scmDevelopmentCommitComment a
1729      * scmDevelopmentCommitComment object.
1730      */
1731     public void setScmDevelopmentCommitComment( String scmDevelopmentCommitComment )
1732     {
1733         this.scmDevelopmentCommitComment = scmDevelopmentCommitComment;
1734     } //-- void setScmDevelopmentCommitComment( String )
1735 
1736     /**
1737      * Set the id can be used to get the credentials by the
1738      * server-id from the settings.xml.
1739      * 
1740      * @param scmId a scmId object.
1741      */
1742     public void setScmId( String scmId )
1743     {
1744         this.scmId = scmId;
1745     } //-- void setScmId( String )
1746 
1747     /**
1748      * Set the password for the user interacting with the scm.
1749      * 
1750      * @param scmPassword a scmPassword object.
1751      */
1752     public void setScmPassword( String scmPassword )
1753     {
1754         this.scmPassword = scmPassword;
1755     } //-- void setScmPassword( String )
1756 
1757     /**
1758      * Set private key for an SSH based SCM repository.
1759      * 
1760      * @param scmPrivateKey a scmPrivateKey object.
1761      */
1762     public void setScmPrivateKey( String scmPrivateKey )
1763     {
1764         this.scmPrivateKey = scmPrivateKey;
1765     } //-- void setScmPrivateKey( String )
1766 
1767     /**
1768      * Set pass phrase for the private key.
1769      * 
1770      * @param scmPrivateKeyPassPhrase a scmPrivateKeyPassPhrase
1771      * object.
1772      */
1773     public void setScmPrivateKeyPassPhrase( String scmPrivateKeyPassPhrase )
1774     {
1775         this.scmPrivateKeyPassPhrase = scmPrivateKeyPassPhrase;
1776     } //-- void setScmPrivateKeyPassPhrase( String )
1777 
1778     /**
1779      * Set relative path of the project returned by the checkout
1780      * command.
1781      * 
1782      * @param scmRelativePathProjectDirectory a
1783      * scmRelativePathProjectDirectory object.
1784      */
1785     public void setScmRelativePathProjectDirectory( String scmRelativePathProjectDirectory )
1786     {
1787         this.scmRelativePathProjectDirectory = scmRelativePathProjectDirectory;
1788     } //-- void setScmRelativePathProjectDirectory( String )
1789 
1790     /**
1791      * Set the SCM commit comment when setting pom.xml to release.
1792      * 
1793      * @param scmReleaseCommitComment a scmReleaseCommitComment
1794      * object.
1795      */
1796     public void setScmReleaseCommitComment( String scmReleaseCommitComment )
1797     {
1798         this.scmReleaseCommitComment = scmReleaseCommitComment;
1799     } //-- void setScmReleaseCommitComment( String )
1800 
1801     /**
1802      * Set tag or branch name: the identifier for the tag/branch.
1803      *             Example: maven-release-plugin-2.0.
1804      * 
1805      * @param scmReleaseLabel a scmReleaseLabel object.
1806      */
1807     public void setScmReleaseLabel( String scmReleaseLabel )
1808     {
1809         this.scmReleaseLabel = scmReleaseLabel;
1810     } //-- void setScmReleaseLabel( String )
1811 
1812     /**
1813      * Set nOTE : currently only implemented with svn scm. It
1814      * contains the revision of the committed released pom to
1815      * remotely tag
1816      *             the source code with this revision.
1817      * 
1818      * @param scmReleasedPomRevision a scmReleasedPomRevision object
1819      */
1820     public void setScmReleasedPomRevision( String scmReleasedPomRevision )
1821     {
1822         this.scmReleasedPomRevision = scmReleasedPomRevision;
1823     } //-- void setScmReleasedPomRevision( String )
1824 
1825     /**
1826      * Set the SCM commit comment when rolling back.
1827      * 
1828      * @param scmRollbackCommitComment a scmRollbackCommitComment
1829      * object.
1830      */
1831     public void setScmRollbackCommitComment( String scmRollbackCommitComment )
1832     {
1833         this.scmRollbackCommitComment = scmRollbackCommitComment;
1834     } //-- void setScmRollbackCommitComment( String )
1835 
1836     /**
1837      * Set get whether to use a shallow clone with no history or a
1838      * full clone containing the full history during the
1839      *             release.
1840      * 
1841      * @param scmShallowClone a scmShallowClone object.
1842      */
1843     public void setScmShallowClone( boolean scmShallowClone )
1844     {
1845         this.scmShallowClone = scmShallowClone;
1846     } //-- void setScmShallowClone( boolean )
1847 
1848     /**
1849      * Set if the scm provider should use sign tags, for example
1850      * for git-exe the '--sign' argument would be used.
1851      * 
1852      * @param scmSignTags a scmSignTags object.
1853      */
1854     public void setScmSignTags( boolean scmSignTags )
1855     {
1856         this.scmSignTags = scmSignTags;
1857     } //-- void setScmSignTags( boolean )
1858 
1859     /**
1860      * Set this is a MavenSCM of where you're going to get the
1861      * sources to make the release with.
1862      *             Example:
1863      * scm:svn:https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-release-plugin.
1864      * 
1865      * @param scmSourceUrl a scmSourceUrl object.
1866      */
1867     public void setScmSourceUrl( String scmSourceUrl )
1868     {
1869         this.scmSourceUrl = scmSourceUrl;
1870     } //-- void setScmSourceUrl( String )
1871 
1872     /**
1873      * Set where you are going to put your tagged sources
1874      *             Example
1875      * https://svn.apache.org/repos/asf/maven/plugins/tags.
1876      * 
1877      * @param scmTagBase a scmTagBase object.
1878      */
1879     public void setScmTagBase( String scmTagBase )
1880     {
1881         this.scmTagBase = scmTagBase;
1882     } //-- void setScmTagBase( String )
1883 
1884     /**
1885      * Set specifies the format for generating a tag name. Property
1886      * expansion is
1887      *             used with the optional prefix of project, where
1888      * properties are delimited
1889      *             with @{ and }.
1890      * 
1891      * @param scmTagNameFormat a scmTagNameFormat object.
1892      */
1893     public void setScmTagNameFormat( String scmTagNameFormat )
1894     {
1895         this.scmTagNameFormat = scmTagNameFormat;
1896     } //-- void setScmTagNameFormat( String )
1897 
1898     /**
1899      * Set whether to use edit mode when making SCM modifications.
1900      * This setting is disregarded
1901      *             if the SCM does not support edit mode, or if
1902      * edit mode is compulsory for the given SCM.
1903      * 
1904      * @param scmUseEditMode a scmUseEditMode object.
1905      */
1906     public void setScmUseEditMode( boolean scmUseEditMode )
1907     {
1908         this.scmUseEditMode = scmUseEditMode;
1909     } //-- void setScmUseEditMode( boolean )
1910 
1911     /**
1912      * Set the user name to interact with the scm.
1913      * 
1914      * @param scmUsername a scmUsername object.
1915      */
1916     public void setScmUsername( String scmUsername )
1917     {
1918         this.scmUsername = scmUsername;
1919     } //-- void setScmUsername( String )
1920 
1921     /**
1922      * Set whether a SNAPSHOT of the release plugin is allowed.
1923      * 
1924      * @param snapshotReleasePluginAllowed a
1925      * snapshotReleasePluginAllowed object.
1926      */
1927     public void setSnapshotReleasePluginAllowed( boolean snapshotReleasePluginAllowed )
1928     {
1929         this.snapshotReleasePluginAllowed = snapshotReleasePluginAllowed;
1930     } //-- void setSnapshotReleasePluginAllowed( boolean )
1931 
1932     /**
1933      * Set whether to suppress a commit of changes to the working
1934      * copy before a tag or branch is created.
1935      * 
1936      * @param suppressCommitBeforeTagOrBranch a
1937      * suppressCommitBeforeTagOrBranch object.
1938      */
1939     public void setSuppressCommitBeforeTagOrBranch( boolean suppressCommitBeforeTagOrBranch )
1940     {
1941         this.suppressCommitBeforeTagOrBranch = suppressCommitBeforeTagOrBranch;
1942     } //-- void setSuppressCommitBeforeTagOrBranch( boolean )
1943 
1944     /**
1945      * Set whether to update branch POM versions.
1946      * 
1947      * @param updateBranchVersions a updateBranchVersions object.
1948      */
1949     public void setUpdateBranchVersions( boolean updateBranchVersions )
1950     {
1951         this.updateBranchVersions = updateBranchVersions;
1952     } //-- void setUpdateBranchVersions( boolean )
1953 
1954     /**
1955      * Set if updateDependencies is false, dependencies version
1956      * won't be updated to the next development version.
1957      * 
1958      * @param updateDependencies a updateDependencies object.
1959      */
1960     public void setUpdateDependencies( boolean updateDependencies )
1961     {
1962         this.updateDependencies = updateDependencies;
1963     } //-- void setUpdateDependencies( boolean )
1964 
1965     /**
1966      * Set whether to update branch versions to SNAPSHOT.
1967      * 
1968      * @param updateVersionsToSnapshot a updateVersionsToSnapshot
1969      * object.
1970      */
1971     public void setUpdateVersionsToSnapshot( boolean updateVersionsToSnapshot )
1972     {
1973         this.updateVersionsToSnapshot = updateVersionsToSnapshot;
1974     } //-- void setUpdateVersionsToSnapshot( boolean )
1975 
1976     /**
1977      * Set whether to update working copy POM versions.
1978      * 
1979      * @param updateWorkingCopyVersions a updateWorkingCopyVersions
1980      * object.
1981      */
1982     public void setUpdateWorkingCopyVersions( boolean updateWorkingCopyVersions )
1983     {
1984         this.updateWorkingCopyVersions = updateWorkingCopyVersions;
1985     } //-- void setUpdateWorkingCopyVersions( boolean )
1986 
1987     /**
1988      * Set whether to use the release profile that adds sources and
1989      * javadocs to the released artifact, if appropriate.
1990      *             If set to true, this will set the property
1991      * "performRelease" to true.
1992      * 
1993      * @param useReleaseProfile a useReleaseProfile object.
1994      */
1995     public void setUseReleaseProfile( boolean useReleaseProfile )
1996     {
1997         this.useReleaseProfile = useReleaseProfile;
1998     } //-- void setUseReleaseProfile( boolean )
1999 
2000     /**
2001      * Set wait the specified number of seconds before creating a
2002      * tag.
2003      * 
2004      * @param waitBeforeTagging a waitBeforeTagging object.
2005      */
2006     public void setWaitBeforeTagging( int waitBeforeTagging )
2007     {
2008         this.waitBeforeTagging = waitBeforeTagging;
2009     } //-- void setWaitBeforeTagging( int )
2010 
2011     /**
2012      * Set some SCMs may require a Work Item or a Task to allow the
2013      * changes to be pushed or delivered.
2014      *             This field allows you to specify that Work Item
2015      * or Task. It is optional, and only relevant
2016      *             if pushChanges is true.
2017      * 
2018      * @param workItem a workItem object.
2019      */
2020     public void setWorkItem( String workItem )
2021     {
2022         this.workItem = workItem;
2023     } //-- void setWorkItem( String )
2024 
2025     /**
2026      * Set the directory where the release is performed.
2027      * 
2028      * @param workingDirectory a workingDirectory object.
2029      */
2030     public void setWorkingDirectory( String workingDirectory )
2031     {
2032         this.workingDirectory = workingDirectory;
2033     } //-- void setWorkingDirectory( String )
2034 
2035     
2036     /**
2037      * Field resolvedSnapshotDependencies.
2038      */
2039     private java.util.Map<String, ReleaseStageVersions> resolvedSnapshotDependencies = new java.util.HashMap<>();
2040 
2041     /**
2042      * Field projectVersions
2043      */
2044     private java.util.Map<String, ReleaseStageVersions> projectVersions = new java.util.HashMap<>();
2045     
2046     /**
2047      * Field originalScmInfo.
2048      */
2049     private java.util.Map<String, org.apache.maven.model.Scm> originalScmInfo = new java.util.HashMap<>();
2050     
2051     
2052     java.util.Map<String, ReleaseStageVersions> getProjectVersions()
2053     {
2054         return projectVersions;
2055     }
2056     
2057     java.util.Map<String, org.apache.maven.model.Scm> getOriginalScmInfo()
2058     {
2059         return originalScmInfo;
2060     }
2061     
2062     /**
2063      * Method getResolvedSnapshotDependencies.
2064      * 
2065      * @return Map
2066      */
2067     java.util.Map<String, ReleaseStageVersions> getResolvedSnapshotDependencies()
2068     {
2069         return this.resolvedSnapshotDependencies;
2070     } //-- java.util.Map<String, ReleaseStageVersions> getResolvedSnapshotDependencies()
2071 
2072     public String getProjectReleaseVersion( String projectId )
2073     {
2074         if ( projectVersions.containsKey( projectId ) )
2075         {
2076             return projectVersions.get( projectId ).getRelease();
2077         }
2078         return null;
2079     }
2080 
2081     /**
2082      * Method addReleaseVersion.
2083      * 
2084      * @param projectId
2085      * @param version
2086      */
2087     public void addReleaseVersion( String projectId, String version )
2088     {
2089         computeIfAbsent( projectVersions, projectId ).setRelease( version ); 
2090     } //-- void addReleaseVersion( String, String )
2091 
2092     public String getProjectDevelopmentVersion( String projectId )
2093     {
2094         if ( projectVersions.containsKey( projectId ) )
2095         {
2096             return projectVersions.get( projectId ).getDevelopment();
2097         }
2098         return null;
2099     }
2100 
2101     /**
2102      * Method addDevelopmentVersion.
2103      * 
2104      * @param projectId
2105      * @param version
2106      */
2107     public void addDevelopmentVersion( String projectId, String version )
2108     {
2109         computeIfAbsent( projectVersions, projectId ).setDevelopment( version ); 
2110     } //-- void addDevelopmentVersion( String, String )
2111 
2112     /**
2113      * Method getOriginalScmInfo.
2114      * 
2115      * @return Scm
2116      */
2117     public org.apache.maven.model.Scm getOriginalScmInfo( String id )
2118     {
2119         return this.originalScmInfo.get( id );
2120     } //-- Scm getOriginalScmInfo( String)
2121     
2122     /**
2123      * Method hasOriginalScmInfo.
2124      * 
2125      * @return map contains
2126      */
2127     public boolean hasOriginalScmInfo( String id )
2128     {
2129         return this.originalScmInfo.containsKey( id );
2130     } //-- boolean hasOriginalScmInfo( String )
2131 
2132     /**
2133      * Method addOriginalScmInfo.
2134      * 
2135      * @param key
2136      * @param value
2137      */
2138     public void addOriginalScmInfo( String key, org.apache.maven.model.Scm value )
2139     {
2140         getOriginalScmInfo().put( key, value );
2141     } //-- void addOriginalScmInfo( String, org.apache.maven.model.Scm )
2142 
2143     public String getProjectOriginalVersion( String projectId )
2144     {
2145         if ( projectVersions.containsKey( projectId ) )
2146         {
2147             return projectVersions.get( projectId ).getOriginal();
2148         }
2149         return null;
2150     }
2151     
2152     public void addOriginalVersion( String projectId, String version )
2153     {
2154         computeIfAbsent( projectVersions, projectId ).setOriginal( version ); 
2155     }
2156 
2157     /**
2158      * Retrieve the release version for the resolved snapshot dependency.
2159      *
2160      */
2161     public String getDependencyDevelopmentVersion( String artifactConflictId )
2162     {
2163         if ( resolvedSnapshotDependencies.containsKey( artifactConflictId ) )
2164         {
2165             ReleaseStageVersions versionMap = resolvedSnapshotDependencies.get( artifactConflictId );
2166             return versionMap.getDevelopment();
2167         }
2168         return null;
2169     }
2170 
2171     /**
2172      * Retrieve the release version for the resolved snapshot dependency.
2173      *
2174      */
2175     public String getDependencyReleaseVersion( String artifactConflictId )
2176     {
2177         if ( resolvedSnapshotDependencies.containsKey( artifactConflictId ) )
2178         {
2179             ReleaseStageVersions versionMap = resolvedSnapshotDependencies.get( artifactConflictId );
2180             return versionMap.getRelease();
2181         }
2182         return null;
2183     }
2184 
2185     /**
2186      * Retrieve the original version for the resolved snapshot dependency.
2187      *
2188      */
2189     public String getDependencyOriginalVersion( String artifactConflictId )
2190     {
2191         if ( resolvedSnapshotDependencies.containsKey( artifactConflictId ) )
2192         {
2193             ReleaseStageVersions versionMap = resolvedSnapshotDependencies.get( artifactConflictId );
2194             return versionMap.getOriginal();
2195         }
2196         return null;
2197     }
2198     
2199     public void addDependencyOriginalVersion( String dependencyKey, String version )
2200     {
2201         computeIfAbsent( resolvedSnapshotDependencies, dependencyKey ).setOriginal( version );
2202     }
2203 
2204     public void addDependencyReleaseVersion( String dependencyKey, String version )
2205     {
2206         computeIfAbsent( resolvedSnapshotDependencies, dependencyKey ).setRelease( version );
2207     }
2208 
2209     public void addDependencyDevelopmentVersion( String dependencyKey, String version )
2210     {
2211         computeIfAbsent( resolvedSnapshotDependencies, dependencyKey ).setDevelopment( version );
2212     }
2213     
2214     private static ReleaseStageVersions computeIfAbsent( java.util.Map<String, ReleaseStageVersions> map, String key )
2215     {
2216         ReleaseStageVersions value = map.get( key );
2217         if ( value == null )
2218         {
2219             value = new ReleaseStageVersions();
2220             map.put( key, value );
2221         }
2222         return value;
2223     }
2224 
2225     @Override
2226     public boolean equals( Object obj )
2227     {
2228         if ( this == obj )
2229         {
2230             return true;
2231         }
2232         if ( obj == null || getClass() != obj.getClass() )
2233         {
2234             return false;
2235         }
2236 
2237         ModelloReleaseDescriptor that = (ModelloReleaseDescriptor) obj;
2238 
2239         if ( updateDependencies               != that.isUpdateDependencies()               ||
2240              useReleaseProfile                != that.isUseReleaseProfile()                ||
2241              autoVersionSubmodules            != that.isAutoVersionSubmodules()            ||
2242              snapshotReleasePluginAllowed     != that.isSnapshotReleasePluginAllowed()     ||
2243              commitByProject                  != that.isCommitByProject()                  ||
2244              branchCreation                   != that.isBranchCreation()                   ||
2245              updateBranchVersions             != that.isUpdateBranchVersions()             ||
2246              updateWorkingCopyVersions        != that.isUpdateWorkingCopyVersions()        ||
2247              suppressCommitBeforeTagOrBranch  != that.isSuppressCommitBeforeTagOrBranch()  ||
2248              updateVersionsToSnapshot         != that.isUpdateVersionsToSnapshot()         ||
2249              allowTimestampedSnapshots        != that.isAllowTimestampedSnapshots()        ||
2250              remoteTagging                    != that.isRemoteTagging()                    ||
2251              pinExternals                     != that.isPinExternals()                     ||
2252              localCheckout                    != that.isLocalCheckout()                    ||
2253              pushChanges                      != that.isPushChanges()
2254            )
2255            {
2256                return false;
2257            }
2258 
2259         if ( !java.util.Objects.equals( defaultDevelopmentVersion, that.getDefaultDevelopmentVersion() ) ||
2260              !java.util.Objects.equals( scmRelativePathProjectDirectory, that.getScmRelativePathProjectDirectory() ) ||
2261              !java.util.Objects.equals( checkoutDirectory, that.getCheckoutDirectory() ) ||
2262              !java.util.Objects.equals( performGoals, that.getPerformGoals() ) ||
2263              !java.util.Objects.equals( defaultReleaseVersion, that.getDefaultReleaseVersion() ) ||
2264              !java.util.Objects.equals( workItem, that.getWorkItem() ) ||
2265              !java.util.Objects.equals( scmReleasedPomRevision, that.getScmReleasedPomRevision() ) ||
2266              !java.util.Objects.equals( autoResolveSnapshots, that.getAutoResolveSnapshots() )
2267            )
2268         {
2269             return false;
2270         }
2271 
2272         if ( addSchema != that.isAddSchema() )
2273         {
2274             return false;
2275         }
2276         if ( generateReleasePoms != that.isGenerateReleasePoms() )
2277         {
2278             return false;
2279         }
2280         if ( interactive != that.isInteractive() )
2281         {
2282             return false;
2283         }
2284         if ( scmUseEditMode != that.isScmUseEditMode() )
2285         {
2286             return false;
2287         }
2288         if ( !java.util.Objects.equals( completedPhase, that.getCompletedPhase() ) )
2289         {
2290             return false;
2291         }
2292         if ( ( checkModificationExcludes == null || ( checkModificationExcludes != null && checkModificationExcludes.size() == 0) ) &&
2293             ( that.getCheckModificationExcludes() == null || ( that.getCheckModificationExcludes() != null && that.getCheckModificationExcludes().size() == 0 ) ) )
2294         {
2295             // Do nothing.  This is a Modello workaround
2296         }
2297         else
2298         {
2299             if ( checkModificationExcludes != null ? !checkModificationExcludes.equals( that.getCheckModificationExcludes() )
2300                 : that.getCheckModificationExcludes() != null )
2301             {
2302                 return false;
2303             }
2304         }
2305         if ( ( originalScmInfo == null || ( originalScmInfo != null && originalScmInfo.size() == 0 ) ) &&
2306             ( that.getOriginalScmInfo() == null || ( that.getOriginalScmInfo() != null && that.getOriginalScmInfo().size() == 0 ) ) )
2307         {
2308             // Do nothing.  This is a Modello workaround
2309         }
2310         else
2311         {
2312             if ( originalScmInfo != null ? !compareScmCollections( that.getOriginalScmInfo() ) : that.getOriginalScmInfo() != null )
2313             {
2314                 return false;
2315             }
2316         }
2317         if ( !java.util.Objects.equals( additionalArguments, that.getAdditionalArguments() ) )
2318         {
2319             return false;
2320         }
2321         if ( !java.util.Objects.equals( preparationGoals, that.getPreparationGoals() ) )
2322         {
2323             return false;
2324         }
2325         if ( !java.util.Objects.equals( completionGoals, that.getCompletionGoals() ) )
2326         {
2327             return false;
2328         }
2329         if ( !java.util.Objects.equals( pomFileName, that.getPomFileName() ) )
2330         {
2331             return false;
2332         }
2333         if ( !java.util.Objects.equals( scmDevelopmentCommitComment, that.getScmDevelopmentCommitComment() ) )
2334         {
2335             return false;
2336         }
2337         if ( !java.util.Objects.equals( scmShallowClone, that.isScmShallowClone() ) )
2338         {
2339             return false;
2340         }
2341         if ( !java.util.Objects.equals( scmReleaseCommitComment, that.getScmReleaseCommitComment() ) )
2342         {
2343             return false;
2344         }
2345         if ( !java.util.Objects.equals( scmBranchCommitComment, that.getScmBranchCommitComment() ) )
2346         {
2347             return false;
2348         }
2349         if ( !java.util.Objects.equals( scmRollbackCommitComment, that.getScmRollbackCommitComment() ) )
2350         {
2351             return false;
2352         }
2353         if ( !java.util.Objects.equals( scmPrivateKeyPassPhrase, that.getScmPrivateKeyPassPhrase() ) )
2354         {
2355             return false;
2356         }
2357         if ( !java.util.Objects.equals( scmPassword, that.getScmPassword() ) )
2358         {
2359             return false;
2360         }
2361         if ( !java.util.Objects.equals( scmPrivateKey, that.getScmPrivateKey() ) )
2362         {
2363             return false;
2364         }
2365         if ( !java.util.Objects.equals( scmReleaseLabel, that.getScmReleaseLabel() ) )
2366         {
2367             return false;
2368         }
2369         if ( !java.util.Objects.equals( scmTagBase, that.getScmTagBase() ) )
2370         {
2371             return false;
2372         }
2373         if ( !java.util.Objects.equals( scmBranchBase, that.getScmBranchBase() ) )
2374         {
2375             return false;
2376         }
2377         if ( !java.util.Objects.equals( scmId, that.getScmId() ) )
2378         {
2379             return false;
2380         }
2381         if ( !java.util.Objects.equals( scmSourceUrl, that.getScmSourceUrl() ) )
2382         {
2383             return false;
2384         }
2385         if ( !java.util.Objects.equals( scmUsername, that.getScmUsername() ) )
2386         {
2387             return false;
2388         }
2389         if ( !java.util.Objects.equals( workingDirectory, that.getWorkingDirectory() ) )
2390         {
2391             return false;
2392         }
2393         if ( !java.util.Objects.equals( scmTagNameFormat, that.getScmTagNameFormat() ) )
2394         {
2395             return false;
2396         }
2397         if ( !java.util.Objects.deepEquals( projectVersions, that.getProjectVersions() ) )
2398         {
2399             return false;
2400         }
2401 
2402         return true;
2403     }
2404 
2405     private boolean compareScmCollections( java.util.Map<String, org.apache.maven.model.Scm> that )
2406     {
2407         // Must manually compare as Scm doesn't have an equals method
2408         if ( that == null && originalScmInfo == null )
2409         {
2410             return true;
2411         }
2412 
2413         if ( ( that == null && originalScmInfo != null ) || ( that != null && originalScmInfo == null ) )
2414         {
2415             return false;
2416         }
2417 
2418         if ( that.size() != originalScmInfo.size() )
2419         {
2420             return false;
2421         }
2422 
2423         for ( java.util.Iterator<java.util.Map.Entry<String, org.apache.maven.model.Scm>> i = originalScmInfo.entrySet().iterator(); i.hasNext(); )
2424         {
2425             java.util.Map.Entry<String, org.apache.maven.model.Scm> entry = i.next();
2426 
2427             org.apache.maven.model.Scm thatScm = that.get( entry.getKey() );
2428 
2429             org.apache.maven.model.Scm thisScm = entry.getValue();
2430             if ( thatScm == null && thisScm == null )
2431             {
2432                 return true;
2433             }
2434             else if ( thatScm == null )
2435             {
2436                 return false;
2437             }
2438             else if ( thisScm == null )
2439             {
2440                 return true;
2441             }
2442 
2443             if ( thisScm.getConnection() != null ? !thisScm.getConnection().equals( thatScm.getConnection() )
2444                 : thatScm.getConnection() != null )
2445             {
2446                 return false;
2447             }
2448             if ( thisScm.getDeveloperConnection() != null ? !thisScm.getDeveloperConnection().equals(
2449                 thatScm.getDeveloperConnection() ) : thatScm.getDeveloperConnection() != null )
2450             {
2451                 return false;
2452             }
2453             if ( thisScm.getUrl() != null ? !thisScm.getUrl().equals( thatScm.getUrl() ) : thatScm.getUrl() != null )
2454             {
2455                 return false;
2456             }
2457             if ( thisScm.getTag() != null ? !thisScm.getTag().equals( thatScm.getTag() ) : thatScm.getTag() != null )
2458             {
2459                 return false;
2460             }
2461 
2462             if ( thisScm instanceof org.apache.maven.shared.release.scm.IdentifiedScm && thatScm instanceof org.apache.maven.shared.release.scm.IdentifiedScm )
2463             {
2464                 org.apache.maven.shared.release.scm.IdentifiedScm thisIdentifiedScm = (org.apache.maven.shared.release.scm.IdentifiedScm) thisScm;
2465                 org.apache.maven.shared.release.scm.IdentifiedScm thatIdentifiedScm = (org.apache.maven.shared.release.scm.IdentifiedScm) thatScm;
2466                 if ( thisIdentifiedScm.getId() != null ? !thisIdentifiedScm.getId().equals( thatIdentifiedScm.getId() ) : thatIdentifiedScm.getId() != null )
2467                 {
2468                     return false;
2469                 }
2470             }
2471         }
2472 
2473         return true;
2474     }
2475 
2476     @Override
2477     public int hashCode()
2478     {
2479         int result = java.util.Objects.hashCode( completedPhase );
2480         result = 29 * result + java.util.Objects.hashCode( scmReleaseLabel );
2481         result = 29 * result + java.util.Objects.hashCode( additionalArguments );
2482         result = 29 * result + java.util.Objects.hashCode( preparationGoals );
2483         result = 29 * result + java.util.Objects.hashCode( completionGoals );
2484         result = 29 * result + java.util.Objects.hashCode( pomFileName );
2485         result = 29 * result + java.util.Objects.hashCode( checkModificationExcludes );
2486         result = 29 * result + java.util.Objects.hashCode( scmDevelopmentCommitComment );
2487         result = 29 * result + java.util.Objects.hashCode( scmShallowClone );
2488         result = 29 * result + java.util.Objects.hashCode( scmReleaseCommitComment );
2489         result = 29 * result + java.util.Objects.hashCode( scmBranchCommitComment );
2490         result = 29 * result + java.util.Objects.hashCode( scmRollbackCommitComment );
2491         result = 29 * result + java.util.Objects.hashCode( scmTagBase );
2492         result = 29 * result + java.util.Objects.hashCode( scmBranchBase );
2493         result = 29 * result + java.util.Objects.hashCode( scmUsername );
2494         result = 29 * result + java.util.Objects.hashCode( scmPassword  );
2495         result = 29 * result + java.util.Objects.hashCode( scmId );
2496         result = 29 * result + java.util.Objects.hashCode( scmSourceUrl );
2497         result = 29 * result + java.util.Objects.hashCode( scmPrivateKey );
2498         result = 29 * result + java.util.Objects.hashCode( scmPrivateKeyPassPhrase );
2499         result = 29 * result + java.util.Objects.hashCode( workingDirectory );
2500         result = 29 * result + java.util.Objects.hashCode( scmUseEditMode );
2501         result = 29 * result + java.util.Objects.hashCode( addSchema );
2502         result = 29 * result + java.util.Objects.hashCode( generateReleasePoms );
2503         result = 29 * result + java.util.Objects.hashCode( interactive );
2504         result = 29 * result + java.util.Objects.hashCode( projectVersions );
2505         result = 29 * result + java.util.Objects.hashCode( originalScmInfo  );
2506         result = 29 * result + java.util.Objects.hashCode( updateDependencies );
2507         result = 29 * result + java.util.Objects.hashCode( useReleaseProfile );
2508         result = 29 * result + java.util.Objects.hashCode( autoVersionSubmodules );
2509         result = 29 * result + java.util.Objects.hashCode( snapshotReleasePluginAllowed );
2510         result = 29 * result + java.util.Objects.hashCode( commitByProject );
2511         result = 29 * result + java.util.Objects.hashCode( branchCreation );
2512         result = 29 * result + java.util.Objects.hashCode( updateBranchVersions );
2513         result = 29 * result + java.util.Objects.hashCode( updateWorkingCopyVersions );
2514         result = 29 * result + java.util.Objects.hashCode( suppressCommitBeforeTagOrBranch );
2515         result = 29 * result + java.util.Objects.hashCode( updateVersionsToSnapshot );
2516         result = 29 * result + java.util.Objects.hashCode( allowTimestampedSnapshots );
2517         result = 29 * result + java.util.Objects.hashCode( remoteTagging );
2518         result = 29 * result + java.util.Objects.hashCode( localCheckout );
2519         result = 29 * result + java.util.Objects.hashCode( pushChanges );
2520         result = 29 * result + java.util.Objects.hashCode( defaultDevelopmentVersion  );
2521         result = 29 * result + java.util.Objects.hashCode( scmRelativePathProjectDirectory );
2522         result = 29 * result + java.util.Objects.hashCode( checkoutDirectory );
2523         result = 29 * result + java.util.Objects.hashCode( performGoals );
2524         result = 29 * result + java.util.Objects.hashCode( defaultReleaseVersion );
2525         result = 29 * result + java.util.Objects.hashCode( scmReleasedPomRevision );
2526         result = 29 * result + java.util.Objects.hashCode( workItem );
2527         result = 29 * result + java.util.Objects.hashCode( autoResolveSnapshots );
2528         result = 29 * result + java.util.Objects.hashCode( pinExternals );
2529 
2530         return result;
2531     }
2532 
2533 }