How do I create an archetype?
Author: Deron Eriksson
Description: This maven tutorial describes how to create an archetype to create projects using maven-archetype-archetype.
Tutorial created using:
Windows Vista || JDK 1.6.0_04 || Eclipse Web Tools Platform 2.0.1 (Eclipse 3.3.1)
A mavenSW archetype allows us to create a basic type of maven project that contains a certain structure with certain files. It is possible to create our own archetype. A quick way to start creating an archetype is to use the maven-archetype-archetype. Here is an EclipseSW external tool configuration to create an archetype project. The maven_exec variable is a string substitution variable that points to my maven mvn.bat file.
The external tool configuration is shown here. ![]() When running the external tool configuration, first we get prompted for the groupId. I enter "com.myarchetype". ![]() Next we're prompted for the artifactId. I enter "maven-archetype-example". ![]() The console output from the external tool configuration to create the archetype project is shown here. Console output for 'mvn archetype:create -DgroupId=com.myarchetype -DartifactId=maven-archetype-example -DarchetypeArtifactId=maven-archetype-archetype'[INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'archetype'. [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Default Project [INFO] task-segment: [archetype:create] (aggregator-style) [INFO] ------------------------------------------------------------------------ [INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'. [INFO] Setting property: velocimacro.messages.on => 'false'. [INFO] Setting property: resource.loader => 'classpath'. [INFO] Setting property: resource.manager.logwhenfound => 'false'. [INFO] ************************************************************** [INFO] Starting Jakarta Velocity v1.4 [INFO] RuntimeInstance initializing. [INFO] Default Properties File: org\apache\velocity\runtime\defaults\velocity.properties [INFO] Default ResourceManager initializing. (class org.apache.velocity.runtime.resource.ResourceManagerImpl) [INFO] Resource Loader Instantiated: org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader [INFO] ClasspathResourceLoader : initialization starting. [INFO] ClasspathResourceLoader : initialization complete. [INFO] ResourceCache : initialized. (class org.apache.velocity.runtime.resource.ResourceCacheImpl) [INFO] Default ResourceManager initialization complete. [INFO] Loaded System Directive: org.apache.velocity.runtime.directive.Literal [INFO] Loaded System Directive: org.apache.velocity.runtime.directive.Macro [INFO] Loaded System Directive: org.apache.velocity.runtime.directive.Parse [INFO] Loaded System Directive: org.apache.velocity.runtime.directive.Include [INFO] Loaded System Directive: org.apache.velocity.runtime.directive.Foreach [INFO] Created: 20 parsers. [INFO] Velocimacro : initialization starting. [INFO] Velocimacro : adding VMs from VM library template : VM_global_library.vm [ERROR] ResourceManager : unable to find resource 'VM_global_library.vm' in any resource loader. [INFO] Velocimacro : error using VM library template VM_global_library.vm : org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'VM_global_library.vm' [INFO] Velocimacro : VM library template macro registration complete. [INFO] Velocimacro : allowInline = true : VMs can be defined inline in templates [INFO] Velocimacro : allowInlineToOverride = false : VMs defined inline may NOT replace previous VM definitions [INFO] Velocimacro : allowInlineLocal = false : VMs defined inline will be global in scope if allowed. [INFO] Velocimacro : initialization complete. [INFO] Velocity successfully started. [INFO] [archetype:create] [INFO] Defaulting package to group ID: com.myarchetype [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating Archetype: maven-archetype-archetype:RELEASE [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: com.myarchetype [INFO] Parameter: packageName, Value: com.myarchetype [INFO] Parameter: package, Value: com.myarchetype [INFO] Parameter: artifactId, Value: maven-archetype-example [INFO] Parameter: basedir, Value: C:\dev\workspace [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] ********************* End of debug info from resources from generated POM *********************** [INFO] Archetype created in dir: C:\dev\workspace\maven-archetype-example [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 second [INFO] Finished at: Wed Feb 20 15:27:38 PST 2008 [INFO] Final Memory: 4M/9M [INFO] ------------------------------------------------------------------------ The archetype project has been created in my Eclipse workspace directory. Now it needs to be imported into Eclipse. To do this, in my Navigator view I select New → Project. ![]() I select JavaSW Project and click Next. ![]() I locate my "maven-archetype-example" project. I click Finish. ![]() The "maven-archetype-example" project now shows up in Eclipse. ![]() I perform a "mvn eclipse:eclipse" on the project so that the project will work correctly in Eclipse and maven. This does things such as sets the .classpath to contain the correct information. ![]() The console output of this command is shown here: Console output for 'mvn eclipse:eclipse' on 'maven-archetype-example' project[INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'eclipse'. [INFO] ------------------------------------------------------------------------ [INFO] Building Archetype - maven-archetype-example [INFO] task-segment: [eclipse:eclipse] [INFO] ------------------------------------------------------------------------ [INFO] Preparing eclipse:eclipse [INFO] No goals needed for project - skipping [INFO] [eclipse:eclipse] [INFO] Using source status cache: C:\dev\workspace\maven-archetype-example\target\mvn-eclipse-cache.properties [INFO] Not writing settings - defaults suffice [INFO] File C:\dev\workspace\maven-archetype-example\.project already exists. Additional settings will be preserved, run mvn eclipse:clean if you want old settings to be removed. [INFO] Wrote Eclipse project for "maven-archetype-example" to C:\dev\workspace\maven-archetype-example. [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 second [INFO] Finished at: Wed Feb 20 15:36:57 PST 2008 [INFO] Final Memory: 3M/8M [INFO] ------------------------------------------------------------------------ The target/classes directory has been created for the class build contents. I deleted the bin directory since it is not needed. ![]() (Continued on page 2) |