blob: 0047209510d7666e16d5cf9e6b4c7e2e99405bc1 [file] [log] [blame]
-----
Archetypeng - Design
-----
The Maven Team
-----
Design
The archetypeng plugin is built upon a stack.
The top most elements are the {{{mojos.html}mojos}}, among them two are
mojos invoking a custom lifecycle on which are binded the inner mojos.
The inner mojos calls the top most components which perform the algorithm
of there task and delegate some task to inner components.
Mojos
The generate mojo calls select-archetype, configure-generation and
generate-archetype in a lifecycle.
The create mojo calls configure-creation and create-project in a lifecycle.
The clean mojo performs his task without an inner mojo nor a plexus
component.
The select-archetype mojo is the inner mojo which delegates its task to the
ArchetypeSelector plexus component.
The configure-generation mojo is the inner mojo which delegates its task to
the ArchetypeGenerationConfigurator plexus component.
The generate-project mojo is the inner mojo which delegates its task to the
ArchetypeGenerator plexus component.
The configure-creation mojo is the inner mojo which delegates its task to
the ArchetypeCreationConfigurator plexus component.
The create-archetype mojo is the inner mojo which delegates its task to the
ArchetypeCreator plexus component.
Main components
The main plexus components of the plugin are the components dirrectly called
by the mojos.
They are ArchetypeSelector, ArchetypeGenerationConfigurator,
ArchetypeGenerator, ArchetypeCreationConfigurator, ArchetypeCreator.
The ArchetypeSelector component perform the algorithm of the selection step
in the project generation.
To performs this task, it uses the ArchetypeArtifactManager,
ArchetypeFactory, ArchetypePropertiesManager, ArchetypeRegistryManager,
ArchetypeSelectionQueryer components.
The ArchetypeGenerationConfigurator component performs the algorithm of the
configuration step in the project generation.
To perform this task, it uses the ArchetypeArtifactManager,
ArchetypeFactory, ArchetypeGenerationQueryer, ArchetypePropertiesManager
components.
The ArchetypeGenerator component performs the algorithm of the generation
step in the project generation.
To perform this task, it uses the ArchetypeArtifactManager,
ArchetypeFactory, ArchetypePathResolver, ArchetypePropertiesManager,
PomManager, VelocityComponent components.
The ArchetypeCreationConfigurator component performs the algorithm of the
configuration step of the archetype creation.
To perfom this task, it uses the ArchetypeCreationQueryer, ArchetypeFactory,
ArchetypePropertiesManager, ArchetypeTemplateResolver components.
The ArchetypeCreator component performs the algorithm of the creation step
in the archetype creation.
to perfom this task, it uses the ArchetypeFactory, ArchetypePathResolver,
ArchetypePropertiesManager, ArchetypeTemplateResolver, PomManager
components.
Queryer components
This kind of component is the one in charge with the interaction with the
user during the selection and configuration steps of the generation and
during the configuration step of the creation.
The ArchetypeSelectionQueryer component asks all the questions of the
selection step of the generation.
It asks to select the group, the archetype, the version and to confirm the
selection.
The ArchetypeGenerationQueryer component asks all the questions of the
configuration step of the selection.
It asks to provide a value for a property and to confirm the configuration.
The ArchetypeCreationQueryer component asks all the questions of the
configuration step of the creation.
Its asks to provide values for the archetype definition (3 questions), to
provide values for the common properties (4 questions), to provide the
keys and values for a specific property (2 question), if a new specific
property is desired and to confirm the configuration.
Common components.
They are components which provides usefull method helping the main component
to perform their tasks.
The ArchetypeArtifactManager component performs all the interaction with the
repositories and gives the descriptor and classloader from which the
generation reads the templates.
ArchetypeFactory component construct the ArchetypeDefinition and the
ArchetypeConfiguration objects.
ArchetypePathResolver component resolves the pathes of the templates in the
archetype archive, the pathes of the generated project files.
ArchetypePropertiesManager component performs the actions which use the
archetype.properties file.
ArchetypeRegistryManager component performs the actions which interact with
the registry file (located in ~/.m2/archetype.xml). That file holds the
archetypeGroup list.
ArchetypeTemplateResolver component find the potential templates in a
directory, sort the templates in site sources or resources, resolve a common
package from a list of sources templates.
PomManager components perfroms the actions of reading and writing pom files
and modify the poms by adding modules, adding parent or merging two poms.