<?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.
  -->

<component-set>
  <components>
<!-- START SNIPPET: default-strategy -->
    <component>
      <role>org.apache.maven.shared.release.strategy.Strategy</role>
      <role-hint>default</role-hint>
      <implementation>org.apache.maven.shared.release.strategies.DefaultStrategy</implementation>
      <configuration>
        <preparePhases>
          <phase>check-poms</phase>
          <phase>scm-check-modifications</phase>
          <phase>check-dependency-snapshots</phase>
          <phase>create-backup-poms</phase>
          <phase>map-release-versions</phase>
          <phase>input-variables</phase>
          <phase>map-development-versions</phase>
          <phase>rewrite-poms-for-release</phase>
          <phase>generate-release-poms</phase>
          <phase>run-preparation-goals</phase>
          <phase>scm-commit-release</phase>
          <phase>scm-tag</phase>
          <phase>rewrite-poms-for-development</phase>
          <phase>remove-release-poms</phase>
          <phase>run-completion-goals</phase>
          <phase>scm-commit-development</phase>
          <phase>end-release</phase>
        </preparePhases>
        <performPhases>
          <phase>verify-completed-prepare-phases</phase>
          <phase>checkout-project-from-scm</phase>
          <phase>run-perform-goals</phase>
        </performPhases>
        <rollbackPhases>
          <phase>restore-backup-poms</phase>
          <phase>scm-commit-rollback</phase>
          <phase>remove-scm-tag</phase>
        </rollbackPhases>
        <branchPhases>
          <phase>check-poms</phase>
          <phase>scm-check-modifications</phase>
          <phase>create-backup-poms</phase>
          <phase>map-branch-versions</phase>
          <phase>branch-input-variables</phase>
          <phase>map-development-versions</phase>
          <phase>rewrite-poms-for-branch</phase>
          <phase>scm-commit-branch</phase>
          <phase>scm-branch</phase>
          <phase>rewrite-poms-for-development</phase>
          <phase>scm-commit-development</phase>
          <phase>end-release</phase>
        </branchPhases>
        <updateVersionsPhases>
          <phase>check-poms-updateversions</phase>
          <phase>create-backup-poms</phase>
          <phase>map-development-versions</phase>
          <phase>rewrite-pom-versions</phase>
        </updateVersionsPhases>
      </configuration>
    </component>
<!-- END SNIPPET: default-strategy -->
    <component>
      <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
      <role-hint>map-release-versions</role-hint>
      <implementation>org.apache.maven.shared.release.phase.MapVersionsPhase</implementation>
      <configuration>
        <convertToSnapshot>false</convertToSnapshot>
      </configuration>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.components.interactivity.Prompter</role>
          <role-hint>default</role-hint>
        </requirement>
        <requirement>
          <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
          <field-name>versionPolicies</field-name>
        </requirement>
      </requirements>
    </component>
    <component>
      <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
      <role-hint>map-development-versions</role-hint>
      <implementation>org.apache.maven.shared.release.phase.MapVersionsPhase</implementation>
      <configuration>
        <convertToSnapshot>true</convertToSnapshot>
      </configuration>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.components.interactivity.Prompter</role>
          <role-hint>default</role-hint>
        </requirement>
        <requirement>
          <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
          <field-name>versionPolicies</field-name>
        </requirement>
      </requirements>
    </component>
    <component>
      <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
      <role-hint>map-branch-versions</role-hint>
      <implementation>org.apache.maven.shared.release.phase.MapVersionsPhase</implementation>
      <configuration>
        <convertToSnapshot>true</convertToSnapshot>
        <convertToBranch>true</convertToBranch>
      </configuration>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.components.interactivity.Prompter</role>
          <role-hint>default</role-hint>
        </requirement>
        <requirement>
          <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
          <field-name>versionPolicies</field-name>
        </requirement>
      </requirements>
    </component>
    <component>
      <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
      <role-hint>scm-commit-release</role-hint>
      <implementation>org.apache.maven.shared.release.phase.ScmCommitPreparationPhase</implementation>
      <requirements>
        <requirement>
          <role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
        </requirement>
      </requirements>
      <configuration>
        <descriptorCommentGetter>getScmReleaseCommitComment</descriptorCommentGetter>
      </configuration>
    </component>
    <component>
      <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
      <role-hint>scm-commit-development</role-hint>
      <implementation>org.apache.maven.shared.release.phase.ScmCommitDevelopmentPhase</implementation>
      <requirements>
        <requirement>
          <role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
        </requirement>
      </requirements>
      <configuration>
        <descriptorCommentGetter>getScmDevelopmentCommitComment</descriptorCommentGetter>
        <rollbackMessageFormat>rollback changes from release preparation of {0}</rollbackMessageFormat>
      </configuration>
    </component>
    <component>
      <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
      <role-hint>scm-commit-branch</role-hint>
      <implementation>org.apache.maven.shared.release.phase.ScmCommitPreparationPhase</implementation>
      <requirements>
        <requirement>
          <role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
        </requirement>
      </requirements>
      <configuration>
        <descriptorCommentGetter>getScmBranchCommitComment</descriptorCommentGetter>
      </configuration>
    </component>
    <component>
      <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
      <role-hint>scm-commit-rollback</role-hint>
      <implementation>org.apache.maven.shared.release.phase.ScmCommitPreparationPhase</implementation>
      <requirements>
        <requirement>
          <role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
        </requirement>
      </requirements>
      <configuration>
        <descriptorCommentGetter>getScmRollbackCommitComment</descriptorCommentGetter>
      </configuration>
    </component>
    <component>
      <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
      <role-hint>check-poms</role-hint>
      <implementation>org.apache.maven.shared.release.phase.CheckPomPhase</implementation>
      <configuration>
        <scmRequired>true</scmRequired>
        <snapshotsRequired>true</snapshotsRequired>
      </configuration>
      <requirements>
        <requirement>
          <role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
        </requirement>
      </requirements>
    </component>
    <component>
      <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
      <role-hint>check-poms-updateversions</role-hint>
      <implementation>org.apache.maven.shared.release.phase.CheckPomPhase</implementation>
      <configuration>
        <scmRequired>false</scmRequired>
        <snapshotsRequired>false</snapshotsRequired>
      </configuration>
      <requirements>
        <requirement>
          <role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
        </requirement>
      </requirements>
    </component>
    <component>
      <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
      <role-hint>input-variables</role-hint>
      <implementation>org.apache.maven.shared.release.phase.InputVariablesPhase</implementation>
      <configuration>
        <branchOperation>false</branchOperation>
        <defaultNamingPolicy>default</defaultNamingPolicy>
      </configuration>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.components.interactivity.Prompter</role>
          <role-hint>default</role-hint>
        </requirement>
        <requirement>
          <role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
        </requirement>
        <requirement>
          <role>org.apache.maven.shared.release.policy.naming.NamingPolicy</role>
          <field-name>namingPolicies</field-name>
        </requirement>
      </requirements>
    </component>
    <component>
      <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
      <role-hint>branch-input-variables</role-hint>
      <implementation>org.apache.maven.shared.release.phase.InputVariablesPhase</implementation>
      <configuration>
        <branchOperation>true</branchOperation>
      </configuration>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.components.interactivity.Prompter</role>
          <role-hint>default</role-hint>
        </requirement>
        <requirement>
          <role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
        </requirement>
        <requirement>
          <role>org.apache.maven.shared.release.policy.naming.NamingPolicy</role>
          <field-name>namingPolicies</field-name>
        </requirement>
      </requirements>
    </component>
  </components>
</component-set>
