blob: c430cb1a7b5662634d2a01bae45c0e5194f96856 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<model xmlns="http://modello.codehaus.org/MODELLO/1.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://modello.codehaus.org/MODELLO/1.4.0 http://modello.codehaus.org/xsd/modello-1.4.0.xsd">
<id>release-descriptor</id>
<name>ReleaseDescriptor</name>
<description>
A release descriptor contains everything that is needed to perform a
release. A release descriptor can be used by third party systems like
Continuum to perform releases in a consistent way. The release model could also
be deployed to the repository manager so that new releases can be announced easily
and automatically.
</description>
<defaults>
<default>
<key>package</key>
<value>org.apache.maven.shared.release.config</value>
</default>
</defaults>
<classes>
<class rootElement="true">
<name>ReleaseDescriptor</name>
<version>1.0.0+</version>
<fields>
<!-- Descriptive Information -->
<field>
<name>name</name>
<version>1.0.0+</version>
<type>String</type>
<description>
The name of this release configuration
</description>
</field>
<field>
<name>description</name>
<version>1.0.0+</version>
<type>String</type>
<description>
The description of this release configuration
</description>
</field>
<!-- Settings needs to be resolved -->
<!-- SCM Information -->
<field>
<name>ScmCommentPrefix</name>
<version>1.0.0+</version>
<type>String</type>
<defaultValue>[maven-release-manager] </defaultValue>
<description>
The prefix of SCM modification messages
</description>
</field>
<field>
<name>scmSourceUrl</name>
<version>1.0.0+</version>
<type>String</type>
<description>
This is a MavenSCM of where you're going to get the sources to make the release with.
Example: scm:svn:https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-release-plugin
</description>
</field>
<field>
<name>scmTagBase</name>
<version>1.0.0+</version>
<type>String</type>
<description>
Where you are going to put your tagged sources
Example https://svn.apache.org/repos/asf/maven/plugins/tags
</description>
</field>
<field>
<name>scmBranchBase</name>
<version>1.0.0+</version>
<type>String</type>
<description>
Where you are going to put your branched sources
Example https://svn.apache.org/repos/asf/maven/plugins/branches
</description>
</field>
<field>
<name>scmReleaseLabel</name>
<version>1.0.0+</version>
<type>String</type>
<description>
tag or branch name: the identifier for the tag/branch.
Example: maven-release-plugin-2.0
</description>
</field>
<field>
<name>scmId</name>
<version>2.3.0+</version>
<type>String</type>
<description>
The id can be used to get the credentials by the server-id from the settings.xml
</description>
</field>
<field>
<name>scmUsername</name>
<version>1.0.0+</version>
<type>String</type>
<description>
The user name to interact with the scm
</description>
</field>
<field>
<name>scmPassword</name>
<version>1.0.0+</version>
<type>String</type>
<description>
The password for the user interacting with the scm
</description>
</field>
<field>
<name>scmPrivateKey</name>
<version>1.0.0+</version>
<type>String</type>
<description>
Private key for an SSH based SCM repository.
</description>
</field>
<field>
<name>scmPrivateKeyPassPhrase</name>
<version>1.0.0+</version>
<type>String</type>
<description>
Pass phrase for the private key.
</description>
</field>
<field>
<name>scmUseEditMode</name>
<version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to use edit mode when making SCM modifications. This setting is disregarded
if the SCM does not support edit mode, or if edit mode is compulsory for the given SCM.
</description>
</field>
<field>
<name>scmRelativePathProjectDirectory</name>
<version>1.0.0+</version>
<type>String</type>
<description>
Relative path of the project returned by the checkout command.
</description>
</field>
<!-- Maven Information -->
<!-- <field> -->
<!-- <name>releaseVersions</name> -->
<!-- <version>1.0.0+</version> -->
<!-- <type>Map</type> -->
<!-- <association> -->
<!-- <type>String</type> -->
<!-- <multiplicity>*</multiplicity> -->
<!-- </association> -->
<!-- <description> -->
<!-- A map of projects to versions to use when releasing the given projects. -->
<!-- </description> -->
<!-- </field> -->
<!-- <field> -->
<!-- <name>developmentVersions</name> -->
<!-- <version>1.0.0+</version> -->
<!-- <type>Map</type> -->
<!-- <association> -->
<!-- <type>String</type> -->
<!-- <multiplicity>*</multiplicity> -->
<!-- </association> -->
<!-- <description> -->
<!-- A map of projects to versions to use when moving the given projects back into development after release. -->
<!-- </description> -->
<!-- </field> -->
<!-- <field> -->
<!-- <name>resolvedSnapshotDependencies</name> -->
<!-- <version>1.0.0+</version> -->
<!-- <type>Map</type> -->
<!-- <association> -->
<!-- <type>String</type> -->
<!-- <multiplicity>*</multiplicity> -->
<!-- </association> -->
<!-- <description> -->
<!-- A map of resolved snapshot dependencies versions. -->
<!-- </description> -->
<!-- </field> -->
<field>
<name>updateDependencies</name>
<version>1.0.0+</version>
<type>boolean</type>
<defaultValue>true</defaultValue>
<description>
If updateDependencies is false, dependencies version won't be updated to the next development version.
</description>
</field>
<field>
<name>useReleaseProfile</name>
<version>1.0.0+</version>
<type>boolean</type>
<defaultValue>true</defaultValue>
<description>
Whether to use the release profile that adds sources and javadocs to the released artifact, if appropriate.
If set to true, this will set the property "performRelease" to true.
</description>
</field>
<!-- <field> -->
<!-- <name>originalScmInfo</name> -->
<!-- <version>1.0.0+</version> -->
<!-- <type>Map</type> -->
<!-- <association> -->
<!-- <type>String</type> -->
<!-- <multiplicity>*</multiplicity> -->
<!-- </association> -->
<!-- <description> -->
<!-- A map of projects to original SCM information. -->
<!-- </description> -->
<!-- </field> -->
<field>
<name>workingDirectory</name>
<version>1.0.0+</version>
<type>String</type>
<description>
The directory where the release is performed.
</description>
</field>
<field>
<name>checkoutDirectory</name>
<version>1.0.0+</version>
<type>String</type>
<description>
The directory where the tag will be checked out.
</description>
</field>
<field>
<name>completedPhase</name>
<version>1.0.0+</version>
<type>String</type>
<description>
The last completed phase.
</description>
</field>
<field>
<name>addSchema</name>
<version>1.0.0+</version>
<type>boolean</type>
<description>
<![CDATA[Whether to add the model schema to the top of the rewritten POM if it wasn't there already.
If <code>false</code> then the root element will remain untouched.]]>
</description>
</field>
<field>
<name>generateReleasePoms</name>
<version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to generate release POMs.
</description>
</field>
<field>
<name>autoVersionSubmodules</name>
<version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to use the parent pom version for submodule versions.
</description>
</field>
<field>
<name>interactive</name>
<version>1.0.0+</version>
<type>boolean</type>
<defaultValue>true</defaultValue>
<description>
Whether the release process is interactive and the release manager should be prompted to
confirm values, or whether the defaults are used regardless.
</description>
</field>
<field>
<name>snapshotReleasePluginAllowed</name>
<version>1.0.0+</version>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>
Whether a SNAPSHOT of the release plugin is allowed.
</description>
</field>
<field>
<name>additionalArguments</name>
<version>1.0.0+</version>
<type>String</type>
<description>
Additional arguments to pass to any executed Maven process.
</description>
</field>
<field>
<name>pomFileName</name>
<version>1.0.0+</version>
<type>String</type>
<description>
The file name of the POM to pass to any executed Maven process.
</description>
</field>
<field>
<name>checkModificationExcludes</name>
<version>2.1.0+</version>
<type>List</type>
<association>
<type>String</type>
<multiplicity>*</multiplicity>
</association>
<description>
In some exceptions you want to allow changes to the working copy. Changes
to files listed here will not make the ScmCheckModificationsPhase fail.
</description>
</field>
<field>
<name>preparationGoals</name>
<version>1.0.0+</version>
<type>String</type>
<description>
The goals to execute in preparation for the release.
</description>
</field>
<field>
<name>completionGoals</name>
<version>2.2.0+</version>
<type>String</type>
<description>
The goals to execute in on completion of preparation for the release.
</description>
</field>
<field>
<name>performGoals</name>
<version>1.0.0+</version>
<type>String</type>
<description>
The goals to execute in perform phase for the release.
</description>
</field>
<field>
<name>commitByProject</name>
<version>1.0.0+</version>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>
The commits must be done by modules or not. Set it to true in case of flat directory structure.
</description>
</field>
<field>
<name>branchCreation</name>
<version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to create a branch instead of do a release.
</description>
</field>
<field>
<name>updateBranchVersions</name>
<version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to update branch POM versions.
</description>
</field>
<field>
<name>updateWorkingCopyVersions</name>
<version>1.0.0+</version>
<type>boolean</type>
<defaultValue>true</defaultValue>
<description>
Whether to update working copy POM versions.
</description>
</field>
<field>
<name>updateVersionsToSnapshot</name>
<version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to update branch versions to SNAPSHOT.
</description>
</field>
<field>
<name>suppressCommitBeforeTagOrBranch</name>
<version>2.1.0+</version>
<type>boolean</type>
<description>
Whether to suppress a commit of changes to the working copy before a tag or branch is created.
</description>
</field>
<field>
<name>waitBeforeTagging</name>
<version>2.2.0+</version>
<type>int</type>
<description>
Wait the specified number of seconds before creating a tag.
</description>
</field>
<field>
<name>allowTimestampedSnapshots</name>
<version>1.0.0+</version>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>
Should timestamped SNAPSHOT dependencies be allowed? Default is to fail when any SNAPSHOT
dependency is found.
</description>
</field>
<field>
<name>defaultReleaseVersion</name>
<version>1.0.0+</version>
<type>String</type>
<description>
Default version to use for the tagged release or the new branch.
</description>
</field>
<field>
<name>defaultDevelopmentVersion</name>
<version>1.0.0+</version>
<type>String</type>
<description>
Default version to use for new working copy.
</description>
</field>
<field>
<name>projectVersionPolicyId</name>
<version>2.5.1+</version>
<type>String</type>
<defaultValue>default</defaultValue>
<description>
The role-hint for the VersionPolicy implementation used to calculate the project versions.
</description>
</field>
<field>
<name>projectNamingPolicyId</name>
<version>3.0.0+</version>
<type>String</type>
<!-- no default value to support scmTagNameFormat-style behavior -->
<description>
The role-hint for the NamingPolicy implementation used to calculate the project branch and tag names.
</description>
</field>
<field>
<name>remoteTagging</name>
<version>1.0.0+</version>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>
NOTE : currently only implemented with svn scm. Enable a workaround to prevent issue due to svn client > 1.5.0
(http://jira.codehaus.org/browse/SCM-406)
</description>
</field>
<field>
<name>scmReleasedPomRevision</name>
<version>1.0.0+</version>
<type>String</type>
<description>
NOTE : currently only implemented with svn scm. It contains the revision of the committed released pom to remotely tag
the source code with this revision.
</description>
</field>
<field>
<name>pushChanges</name>
<version>2.0.0+</version>
<type>boolean</type>
<defaultValue>true</defaultValue>
<description>
Should distributed changes be pushed to the central repository?
For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository.
Pushing the change allows your to more easily share it with other users.
</description>
</field>
<field>
<name>localCheckout</name>
<version>2.0.0+</version>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>
If the scm provider should use local checkouts via file://${basedir}
instead of doing a clean checkout over the network.
This is very helpful for releasing large projects!
</description>
</field>
<field>
<name>scmTagNameFormat</name>
<version>2.2.0+</version>
<type>String</type>
<description>
Specifies the format for generating a tag name. Property expansion is
used with the optional prefix of project, where properties are delimited
with @{ and }
</description>
</field>
<!-- Announcement Information
Announcement related info, this can be a second part of the process.
o anything that might be of interest in the release
o issue management urls
o new content
o announcement text
-->
</fields>
<!-- Code Segments -->
<codeSegments>
<codeSegment>
<version>2.1.0+</version>
<code><![CDATA[
public static final String DEVELOPMENT_KEY = "dev";
public static final String RELEASE_KEY = "rel";
public static final String ORIGINAL_VERSION = "original";
/**
* Field resolvedSnapshotDependencies.
*/
private java.util.Map<String, java.util.Map<String, String>> resolvedSnapshotDependencies;
/**
* Field releaseVersions.
*/
private java.util.Map<String, String> releaseVersions;
/**
* Field developmentVersions.
*/
private java.util.Map<String, String> developmentVersions;
/**
* Field originalScmInfo.
*/
private java.util.Map<String, org.apache.maven.model.Scm> originalScmInfo;
/**
* Method getResolvedSnapshotDependencies.
*
* @return Map
*/
public java.util.Map<String, java.util.Map<String, String>> getResolvedSnapshotDependencies()
{
if ( this.resolvedSnapshotDependencies == null )
{
this.resolvedSnapshotDependencies = new java.util.HashMap<>();
}
return this.resolvedSnapshotDependencies;
} //-- java.util.Map<String, java.util.Map<String, String>> getResolvedSnapshotDependencies()
/**
* Set a map of resolved snapshot dependencies versions.
*
* @param resolvedSnapshotDependencies
*/
public void setResolvedSnapshotDependencies( java.util.Map<String, java.util.Map<String, String>> resolvedSnapshotDependencies )
{
this.resolvedSnapshotDependencies = resolvedSnapshotDependencies;
} //-- void setResolvedSnapshotDependencies( java.util.Map<String, java.util.Map<String, String>> )
/**
* Method getReleaseVersions.
*
* @return Map
*/
public java.util.Map<String, String> getReleaseVersions()
{
if ( this.releaseVersions == null )
{
this.releaseVersions = new java.util.HashMap<>();
}
return this.releaseVersions;
} //-- java.util.Map<String, String> getReleaseVersions()
/**
* Method addReleaseVersion.
*
* @param key
* @param value
*/
public void addReleaseVersion( String key, String value )
{
getReleaseVersions().put( key, value );
} //-- void addReleaseVersion( String, String )
/**
* Method getDevelopmentVersions.
*
* @return Map
*/
public java.util.Map<String, String> getDevelopmentVersions()
{
if ( this.developmentVersions == null )
{
this.developmentVersions = new java.util.HashMap<>();
}
return this.developmentVersions;
} //-- java.util.Map<String, String> getDevelopmentVersions()
/**
* Method addDevelopmentVersion.
*
* @param key
* @param value
*/
public void addDevelopmentVersion( String key, String value )
{
getDevelopmentVersions().put( key, value );
} //-- void addDevelopmentVersion( String, String )
/**
* Method getOriginalScmInfo.
*
* @return Map
*/
public java.util.Map<String, org.apache.maven.model.Scm> getOriginalScmInfo()
{
if ( this.originalScmInfo == null )
{
this.originalScmInfo = new java.util.HashMap<>();
}
return this.originalScmInfo;
} //-- java.util.Map<Object, String> getOriginalScmInfo()
/**
* Method addOriginalScmInfo.
*
* @param key
* @param value
*/
public void addOriginalScmInfo( String key, org.apache.maven.model.Scm value )
{
getOriginalScmInfo().put( key, value );
} //-- void addOriginalScmInfo( String, org.apache.maven.model.Scm )
/**
* Map a given snapshot dependency to a specified version from when it is released.
*
*/
public void mapResolvedSnapshotDependencies( String artifactName, String releaseVersion, String developmentVersion )
{
if ( resolvedSnapshotDependencies == null )
{
resolvedSnapshotDependencies = new java.util.HashMap<>();
}
else
{
assert !resolvedSnapshotDependencies.containsKey( artifactName );
}
java.util.Map versionsMap = new java.util.HashMap<>();
versionsMap.put( DEVELOPMENT_KEY, developmentVersion );
versionsMap.put( RELEASE_KEY, releaseVersion );
resolvedSnapshotDependencies.put( artifactName, versionsMap );
}
/**
* Map a given project to a specified version from when it is released.
*
* @param projectId the project's group and artifact ID
* @param nextVersion the version to map to
*/
public void mapReleaseVersion( String projectId, String nextVersion )
{
if ( releaseVersions == null )
{
releaseVersions = new java.util.HashMap<>();
}
releaseVersions.put( projectId, nextVersion );
}
/**
* Map a given project to a specified version from when it is incremented and placed back into development.
*
* @param projectId the project's group and artifact ID
* @param nextVersion the version to map to
*/
public void mapDevelopmentVersion( String projectId, String nextVersion )
{
if ( developmentVersions == null )
{
developmentVersions = new java.util.HashMap<>();
}
developmentVersions.put( projectId, nextVersion );
}
/**
* Map a given project to a specified set of SCM information.
*
* @param projectId the project's group and artifact ID
* @param scm the original SCM information to store
*/
public void mapOriginalScmInfo( String projectId, org.apache.maven.model.Scm scm )
{
if ( originalScmInfo == null )
{
originalScmInfo = new java.util.HashMap<>();
}
else
{
assert !originalScmInfo.containsKey( projectId );
}
originalScmInfo.put( projectId, scm );
}
/**
* A map of projects to original versions before any transformation.
*/
private java.util.Map originalVersions;
/**
* Retrieve the original version map, before transformation, keyed by project's versionless identifier.
*
* @param reactorProjects The reactor projects.
*
* @return the map of project IDs to versions.
*/
public synchronized java.util.Map<String, String> getOriginalVersions( java.util.List<org.apache.maven.project.MavenProject> reactorProjects )
{
if ( originalVersions == null )
{
originalVersions = new java.util.HashMap<>();
for ( org.apache.maven.project.MavenProject project : reactorProjects )
{
originalVersions.put( org.apache.maven.artifact.ArtifactUtils.versionlessKey( project.getGroupId(),
project.getArtifactId() ), project.getVersion() );
}
}
return originalVersions;
}
/**
* Retrieve the release version for the resolved snapshot dependency.
*
*/
public String getDependencyDevelopmentVersion( String artifactConflictId )
{
if ( ( resolvedSnapshotDependencies == null ) && ( resolvedSnapshotDependencies.containsKey( artifactConflictId ) ) )
{
java.util.Map<String, String> versionMap = resolvedSnapshotDependencies.get( artifactConflictId );
return versionMap.get( DEVELOPMENT_KEY );
}
return null;
}
/**
* Retrieve the release version for the resolved snapshot dependency.
*
*/
public String getDependencyReleaseVersion( String artifactConflictId )
{
if ( ( resolvedSnapshotDependencies == null ) && ( resolvedSnapshotDependencies.containsKey( artifactConflictId ) ) )
{
java.util.Map<String, String> versionMap = resolvedSnapshotDependencies.get( artifactConflictId );
return versionMap.get( RELEASE_KEY );
}
return null;
}
boolean safeEquals( String a, String b )
{
return a != null ? a.equals( b ) : b == null;
}
public boolean equals( Object obj )
{
if ( this == obj )
{
return true;
}
if ( obj == null || getClass() != obj.getClass() )
{
return false;
}
ReleaseDescriptor that = (ReleaseDescriptor) obj;
if ( updateDependencies != that.updateDependencies ||
useReleaseProfile != that.useReleaseProfile ||
autoVersionSubmodules != that.autoVersionSubmodules ||
snapshotReleasePluginAllowed != that.snapshotReleasePluginAllowed ||
commitByProject != that.commitByProject ||
branchCreation != that.branchCreation ||
updateBranchVersions != that.updateBranchVersions ||
updateWorkingCopyVersions != that.updateWorkingCopyVersions||
suppressCommitBeforeTagOrBranch != that.suppressCommitBeforeTagOrBranch ||
updateVersionsToSnapshot != that.updateVersionsToSnapshot ||
allowTimestampedSnapshots != that.allowTimestampedSnapshots||
remoteTagging != that.remoteTagging ||
localCheckout != that.localCheckout ||
pushChanges != that.pushChanges
)
{
return false;
}
if ( !safeEquals( defaultDevelopmentVersion, that.defaultDevelopmentVersion ) ||
!safeEquals( scmRelativePathProjectDirectory, that.scmRelativePathProjectDirectory ) ||
!safeEquals( checkoutDirectory, that.checkoutDirectory ) ||
!safeEquals( performGoals, that.performGoals ) ||
!safeEquals( defaultReleaseVersion, that.defaultReleaseVersion ) ||
!safeEquals( scmReleasedPomRevision, that.scmReleasedPomRevision )
)
{
return false;
}
if ( addSchema != that.addSchema )
{
return false;
}
if ( generateReleasePoms != that.generateReleasePoms )
{
return false;
}
if ( interactive != that.interactive )
{
return false;
}
if ( scmUseEditMode != that.scmUseEditMode )
{
return false;
}
if ( !safeEquals( completedPhase, that.completedPhase ) )
{
return false;
}
if ( ( checkModificationExcludes == null || ( checkModificationExcludes != null && checkModificationExcludes.size() == 0) ) &&
( that.checkModificationExcludes == null || ( that.checkModificationExcludes != null && that.checkModificationExcludes.size() == 0) ) )
{
// Do nothing. This is a Modello workaround
}
else
{
if ( checkModificationExcludes != null ? !checkModificationExcludes.equals( that.checkModificationExcludes )
: that.checkModificationExcludes != null )
{
return false;
}
}
if ( ( developmentVersions == null || ( developmentVersions != null && developmentVersions.size() == 0) ) &&
( that.developmentVersions == null || ( that.developmentVersions != null && that.developmentVersions.size() == 0) ) )
{
// Do nothing. This is a Modello workaround
}
else
{
if ( developmentVersions != null ? !developmentVersions.equals( that.developmentVersions )
: that.developmentVersions != null )
{
return false;
}
}
if ( ( originalScmInfo == null || (originalScmInfo != null && originalScmInfo.size() == 0 ) ) &&
( that.originalScmInfo == null || ( that.originalScmInfo != null && that.originalScmInfo.size() == 0 ) ) )
{
// Do nothing. This is a Modello workaround
}
else
{
if ( originalScmInfo != null ? !compareScmCollections( that.originalScmInfo ) : that.originalScmInfo != null )
{
return false;
}
}
if ( ( releaseVersions == null || ( releaseVersions != null && releaseVersions.size() == 0 ) ) &&
( that.releaseVersions == null || ( that.releaseVersions != null && that.releaseVersions.size() == 0 ) ) )
{
// Do nothing. This is a Modello workaround
}
else
{
if ( releaseVersions != null ? !releaseVersions.equals( that.releaseVersions ) : that.releaseVersions != null )
{
return false;
}
}
if ( !safeEquals( additionalArguments, that.additionalArguments ) )
{
return false;
}
if ( !safeEquals( preparationGoals, that.preparationGoals ) )
{
return false;
}
if ( !safeEquals( completionGoals, that.completionGoals ) )
{
return false;
}
if ( !safeEquals( pomFileName, that.pomFileName ) )
{
return false;
}
if ( !safeEquals( scmPrivateKeyPassPhrase, that.scmPrivateKeyPassPhrase ) )
{
return false;
}
if ( !safeEquals( scmPassword, that.scmPassword ) )
{
return false;
}
if ( !safeEquals( scmPrivateKey, that.scmPrivateKey ) )
{
return false;
}
if ( !safeEquals( scmReleaseLabel, that.scmReleaseLabel ) )
{
return false;
}
if ( !safeEquals( scmTagBase, that.scmTagBase ) )
{
return false;
}
if ( !safeEquals( scmBranchBase, that.scmBranchBase ) )
{
return false;
}
if ( !safeEquals( scmId, that.scmId ) )
{
return false;
}
if ( !safeEquals( scmSourceUrl, that.scmSourceUrl ) )
{
return false;
}
if ( !safeEquals( scmUsername, that.scmUsername ) )
{
return false;
}
if ( !safeEquals( workingDirectory, that.workingDirectory ) )
{
return false;
}
if ( !safeEquals( scmTagNameFormat, that.scmTagNameFormat ) )
{
return false;
}
return true;
}
private boolean compareScmCollections( java.util.Map that )
{
// Must manually compare as Scm doesn't have an equals method
if ( that == null && originalScmInfo == null )
{
return true;
}
if ( ( that == null && originalScmInfo != null ) || ( that != null && originalScmInfo == null ) )
{
return false;
}
if ( that.size() != originalScmInfo.size() )
{
return false;
}
for ( java.util.Iterator i = originalScmInfo.entrySet().iterator(); i.hasNext(); )
{
java.util.Map.Entry entry = (java.util.Map.Entry) i.next();
org.apache.maven.model.Scm thatScm = (org.apache.maven.model.Scm) that.get( entry.getKey() );
org.apache.maven.model.Scm thisScm = (org.apache.maven.model.Scm) entry.getValue();
if ( thatScm == null && thisScm == null )
{
return true;
}
else if ( thatScm == null )
{
return false;
}
else if ( thisScm == null )
{
return true;
}
if ( thisScm.getConnection() != null ? !thisScm.getConnection().equals( thatScm.getConnection() )
: thatScm.getConnection() != null )
{
return false;
}
if ( thisScm.getDeveloperConnection() != null ? !thisScm.getDeveloperConnection().equals(
thatScm.getDeveloperConnection() ) : thatScm.getDeveloperConnection() != null )
{
return false;
}
if ( thisScm.getUrl() != null ? !thisScm.getUrl().equals( thatScm.getUrl() ) : thatScm.getUrl() != null )
{
return false;
}
if ( thisScm.getTag() != null ? !thisScm.getTag().equals( thatScm.getTag() ) : thatScm.getTag() != null )
{
return false;
}
if ( thisScm instanceof org.apache.maven.shared.release.scm.IdentifiedScm && thatScm instanceof org.apache.maven.shared.release.scm.IdentifiedScm )
{
org.apache.maven.shared.release.scm.IdentifiedScm thisIdentifiedScm = (org.apache.maven.shared.release.scm.IdentifiedScm) thisScm;
org.apache.maven.shared.release.scm.IdentifiedScm thatIdentifiedScm = (org.apache.maven.shared.release.scm.IdentifiedScm) thatScm;
if ( thisIdentifiedScm.getId() != null ? !thisIdentifiedScm.getId().equals( thatIdentifiedScm.getId() ) : thatIdentifiedScm.getId() != null )
{
return false;
}
}
}
return true;
}
public int hashCode()
{
int result = completedPhase != null ? completedPhase.hashCode() : 0;
result = 29 * result + ( scmReleaseLabel != null ? scmReleaseLabel.hashCode() : 0 );
result = 29 * result + ( additionalArguments != null ? additionalArguments.hashCode() : 0 );
result = 29 * result + ( preparationGoals != null ? preparationGoals.hashCode() : 0 );
result = 29 * result + ( completionGoals != null ? completionGoals.hashCode() : 0 );
result = 29 * result + ( pomFileName != null ? pomFileName.hashCode() : 0 );
result = 29 * result + ( checkModificationExcludes != null ? checkModificationExcludes.hashCode() : 0 );
result = 29 * result + ( scmTagBase != null ? scmTagBase.hashCode() : 0 );
result = 29 * result + ( scmBranchBase != null ? scmBranchBase.hashCode() : 0 );
result = 29 * result + ( scmUsername != null ? scmUsername.hashCode() : 0 );
result = 29 * result + ( scmPassword != null ? scmPassword.hashCode() : 0 );
result = 29 * result + ( scmId != null ? scmId.hashCode() : 0 );
result = 29 * result + ( scmSourceUrl != null ? scmSourceUrl.hashCode() : 0 );
result = 29 * result + ( scmPrivateKey != null ? scmPrivateKey.hashCode() : 0 );
result = 29 * result + ( scmPrivateKeyPassPhrase != null ? scmPrivateKeyPassPhrase.hashCode() : 0 );
result = 29 * result + ( workingDirectory != null ? workingDirectory.hashCode() : 0 );
result = 29 * result + ( scmUseEditMode ? 1 : 0 );
result = 29 * result + ( addSchema ? 1 : 0 );
result = 29 * result + ( generateReleasePoms ? 1 : 0 );
result = 29 * result + ( interactive ? 1 : 0 );
result = 29 * result + ( releaseVersions != null ? releaseVersions.hashCode() : 0 );
result = 29 * result + ( developmentVersions != null ? developmentVersions.hashCode() : 0 );
result = 29 * result + ( originalScmInfo != null ? originalScmInfo.hashCode() : 0 );
result = 29 * result + ( updateDependencies ? 1 : 0 );
result = 29 * result + ( useReleaseProfile ? 1 : 0 );
result = 29 * result + ( autoVersionSubmodules ? 1 : 0 );
result = 29 * result + ( snapshotReleasePluginAllowed ? 1 : 0 );
result = 29 * result + ( commitByProject ? 1 : 0 );
result = 29 * result + ( branchCreation ? 1 : 0 );
result = 29 * result + ( updateBranchVersions ? 1 : 0 );
result = 29 * result + ( updateWorkingCopyVersions ? 1 : 0 );
result = 29 * result + ( suppressCommitBeforeTagOrBranch ? 1 : 0 );
result = 29 * result + ( updateVersionsToSnapshot ? 1 : 0 );
result = 29 * result + ( allowTimestampedSnapshots ? 1 : 0 );
result = 29 * result + ( remoteTagging ? 1 : 0 );
result = 29 * result + ( localCheckout ? 1 : 0 );
result = 29 * result + ( pushChanges ? 1 : 0 );
result = 29 * result + ( defaultDevelopmentVersion != null ? defaultDevelopmentVersion.hashCode() : 0 );
result = 29 * result + ( scmRelativePathProjectDirectory != null ? scmRelativePathProjectDirectory.hashCode() : 0 );
result = 29 * result + ( checkoutDirectory != null ? checkoutDirectory.hashCode() : 0 );
result = 29 * result + ( performGoals != null ? performGoals.hashCode() : 0 );
result = 29 * result + ( defaultReleaseVersion != null ? defaultReleaseVersion.hashCode() : 0 );
result = 29 * result + ( scmReleasedPomRevision != null ? scmReleasedPomRevision.hashCode() : 0 );
return result;
}
]]></code>
</codeSegment>
</codeSegments>
</class>
</classes>
</model>