| ------ |
| Create an Archetype from a Project |
| ------ |
| 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 |
| |
| |
| What is done during the creation of an archetype? |
| |
| * Property resolution |
| |
| First, the Archetype Plugin asks the user to provide the common properties' |
| values (<<<archetype.groupId>>>, <<<archetype.artifactId>>>, <<<archetype.version>>>, |
| <<<groupId>>>, <<<artifactId>>>, <<<version>>>, <<<package>>>). |
| |
| Then it asks for additional properties. |
| |
| * Archetype creation |
| |
| Using the project's directory as sources, <<<filteredExtensions>>> and <<<languages>>> |
| properties, the module tree; the Archetype Plugin searches for relevant |
| filesets indexed by module. |
| |
| Using the relevant filesets, the module tree, the resolved properties; the |
| Archetype Plugin creates the archetype's resources. |
| |
| Then it creates the archetype's descriptor. |
| |
| Finishing by creating the POM for the archetype as a project. |
| |
| * Archetype testing |
| |
| If you are creating an archetype from existing project all the tests from src/<it/projects> folder |
| will be executed at this point. |
| |
| * Archetype installation |
| |
| Optionally, after creating the archetype, the Archetype Plugin installs the |
| archetype in the local repository. And it updates the local catalog. |
| |
| * Archetype deployment |
| |
| Optionally, after installing the archetype, the Archetype Plugin deploys the |
| archetype to the remote repository. |
| |
| * Interactive mode |
| |
| The default behaviour is to operate in batch mode. The interactive mode is |
| optionally used. |
| |
| * Advanced batch mode |
| |
| In batch mode, the additional properties can only be defined using a property |
| file. This file can also contain the other properties, both the common and |
| <<<filteredExtensions>>> and <<<languages>>>. |
| |
| * Fileset resolution |
| |
| In each module's directory and excluding submodules trees, the Archetype |
| Plugin sorts the files by languages, filteredExtensions and sensible |
| default base paths (src/main/<languages>, src/main/<siblings>, |
| src/test/<languages>, src/test/<siblings>, ...). |
| |
| This defines a three-dimensional matrix. Each sorted group (matrix' cases) |
| becomes a resolved fileset. |