Maven: The Complete Reference
12.2. Using Archetypes

You can use an archetype by invoking the generate goal of the Archetype plugin via the command-line or with m2eclipse.
The following command line can be used to generate a project from the quickstart archetype.
mvn archetype:generate \ -DgroupId=org.sonatype.mavenbook \ -DartifactId=quickstart \ -Dversion=1.0-SNAPSHOT \ -DpackageName=org.sonatype.mavenbook \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DarchetypeVersion=1.0 \ -DinteractiveMode=false
The generate goal accepts the following parameters:
-
groupId -
The
groupIdfor the project you are creating. -
artifactId -
The
artifactIdfor the project you are creating. -
version -
The
versionfor the project you are creating (defaults to 1.0-SNAPSHOT). -
packageName -
The default package for the project you are creating (defaults to
groupId). -
archetypeGroupId -
The
groupIdof the archetype you wish to use for project generation. -
archetypeArtifactId -
The
artifactIdof the archetype you wish to use for project generation. -
archetypeVersion -
The
versionof the archetype you wish to use for project generation. -
interactiveMode -
When the
generategoal is executed in interactive mode, it will prompt the user for all the previously listed parameters. WheninteractiveModeis false, thegenerategoal will use the values passed in from the command line.
Once you run the generate goal using the previously listed command
line, you will have a directory named quickstart which contains a new
Maven project. The command line you had to suffer through in this
section is difficult to manage. In the next section we generate the
same project running the generate goal in an interactive mode.
The simplest way to use the Maven Archetype plugin to generate a new
Maven project from an archetype is to run the archetype:generate
goal in interactive mode. When interactiveMode is set to true, the
generate goal will present you with a list of archetypes and prompt
you to select an archetype and supply the necessary identifiers. Since
the default value of the parameter interactiveMode is true, all
you have to do to generate a new Maven project is run mvn
archetype:generate.
$ mvn archetype:generate [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Default Project [INFO]task-segment: [archetype:generate] (aggregator-style) [INFO] [archetype:generate] [INFO] Generating project in Interactive mode [INFO] No archetype defined. Using maven-archetype-quickstart Choose archetype: 1: internal -> appfuse-basic-jsf 2: internal -> appfuse-basic-spring 3: internal -> appfuse-basic-struts 4: internal -> appfuse-basic-tapestry 5: internal -> appfuse-core 6: internal -> appfuse-modular-jsf 7: internal -> appfuse-modular-spring 8: internal -> appfuse-modular-struts 9: internal -> appfuse-modular-tapestry 10: internal -> maven-archetype-j2ee-simple 11: internal -> maven-archetype-marmalade-mojo 12: internal -> maven-archetype-mojo 13: internal -> maven-archetype-portlet 14: internal -> maven-archetype-profiles 15: internal -> maven-archetype-quickstart 16: internal -> maven-archetype-site-simple 17: internal -> maven-archetype-site 18: internal -> maven-archetype-webapp 19: internal -> jini-service-archetype 20: internal -> softeu-archetype-seam 21: internal -> softeu-archetype-seam-simple 22: internal -> softeu-archetype-jsf 23: internal -> jpa-maven-archetype 24: internal -> spring-osgi-bundle-archetype 25: internal -> confluence-plugin-archetype 26: internal -> jira-plugin-archetype 27: internal -> maven-archetype-har 28: internal -> maven-archetype-sar 29: internal -> wicket-archetype-quickstart 30: internal -> scala-archetype-simple 31: internal -> lift-archetype-blank 32: internal -> lift-archetype-basic 33: internal -> cocoon-22-archetype-block-plain 34: internal -> cocoon-22-archetype-block 35: internal -> cocoon-22-archetype-webapp 36: internal -> myfaces-archetype-helloworld 37: internal -> myfaces-archetype-helloworld-facelets 38: internal -> myfaces-archetype-trinidad 39: internal -> myfaces-archetype-jsfcomponents 40: internal -> gmaven-archetype-basic 41: internal -> gmaven-archetype-mojo Choose a number: +15 +
The first thing that the archetype:generate goal does in interactive
mode is print out a list of archetypes that it is aware of. The Maven
Archetype plugin ships with an archetype catalog which includes a
reference to all of the standard, simple Maven archetypes (10-18). The
plugin’s archetype catalog also contains a number of references to
compelling third-party archetypes such as archetypes which can be used
to create AppFuse projects, Confluence and JIRA plugins, Wicket
applications, Scala applications, and Groovy projects. For a brief
overview of these third-party archetypes, see
Section 12.3.2, “Notable Third-Party Archetypes”.
Once you select an archetype, the Maven Archetype plugin downloads the archetype, and then asks you to supply the following values for your new project:
- groupId
- artifactId
- version
- package
Define value for groupId: : +org.sonatype.mavenbook+ Define value for artifactId: : +quickstart+ Define value for version: 1.0-SNAPSHOT: : +1.0-SNAPSHOT+ Define value for package: org.sonatype.mavenbook: : +org.sonatype.mavenbook+ Confirm properties configuration: groupId: org.sonatype.mavenbook artifactId: quickstart version: 1.0-SNAPSHOT package: org.sonatype.mavenbook Y: : +Y+
Once this interactive portion of the archetype:generate goal
execution is finished, the Maven Archetype plugin will generate the
project in a directory named after the artifactId you supplied.
[INFO] Parameter: groupId, Value: org.sonatype.mavenbook [INFO] Parameter: packageName, Value: org.sonatype.mavenbook [INFO] Parameter: basedir, Value: /Users/tobrien/tmp [INFO] Parameter: package, Value: org.sonatype.mavenbook [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: artifactId, Value: quickstart [INFO] ********************* End of debug info from resources from \ generated POM ** [INFO] OldArchetype created in dir: /Users/tobrien/tmp/quickstart [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 minute 57 seconds [INFO] Finished at: Sun Oct 12 15:39:14 CDT 2008 [INFO] Final Memory: 8M/15M [INFO] ------------------------------------------------------------------------
m2eclipse makes creating a new Maven project from a Maven Archetype very easy by providing an intuitive wizard for searching for, selecting, and configuring a Maven Archetype. For more information about generating a Maven project from a Maven Archetype using m2eclipse, see Creating a Maven Project from a Maven Archetype in "Developing with Eclipse and Maven".
