 ------
 Specification
 ------
 Raphaël Piéroni
 ------
 2011-09-30
 ------

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

~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/doxia/references/apt-format.html


Specification

    The Specification of the Archetype Plugin aims to answer to the following
    questions:

    * {{{./archetype.html}What is an archetype?}}

    * {{{./archetype-metadata.html}How is metadata about an archetype stored?}}

    * {{{./generate.html}What is done during the creation of a project?}}

    * {{{./archetype-catalog.html}How does the Archetype Plugin know about archetypes?}}

    * {{{./create-from-project.html}What is done during the creation of an archetype?}}
~~
~~    * {{{./update-catalog.html}How does the Archetype Plugin know about new archetypes?}}
~~
~~    * {{{./crawl-repository.html}How are archetype lists created?}}

    []