<!--
   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.
-->
<project name="org.apache.easyant.plugins#phases-std" xmlns:ea="antlib:org.apache.easyant">
    <ea:core-version requiredrevision="[0.8,+]" />

    <extension-point name="clean" description="delete any artifacts from previous builds" />
    <extension-point name="validate" description="validate the project is correct and all necessary information is available" />
    <extension-point name="compile" description="compile the source code of the project" />
    <extension-point name="test" depends="compile"
        description="run tests using a suitable unit testing framework. These tests should not require the code be packaged or deployed" />
    <extension-point name="package" depends="compile"
        description="take the compiled code and package it in its distributable format, such as a JAR." />
    <extension-point name="integration-test"
        description="process and deploy the package if necessary into an environment where integration tests can be run" />
    <extension-point name="verify" depends="package, test, integration-test"
        description="run any checks to verify the package is valid and meets quality criteria" />
    <extension-point name="publish-local"
        description="publish the package into the local repository, for use as a dependency in other projects locally" />
    <extension-point name="publish-shared"
        description="done in an integration environment, copies the final package to the remote repository for sharing with other developers and projects" />
    <extension-point name="release"
        description="done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects" />
    <extension-point name="report" description="generate report" />
</project>
