本文介绍如何使用Maven的骨架功能。 Archetype插件(Plugin)允许用于利用已有的称之为“骨架”的模板来创建一个Maven工程(Project)。它还允许用户根据一个已经存在的Maven工程来创建一个“骨架”。 Maven骨架要求的Java版本是1.5+。 下面是一副原理图: [caption id="attachment_4686" align="aligncenter" width="792"]
![archetype-overview](https://static.oschina.net/uploads/img/201612/31204927_EKix.png)
archetype-overview[/caption]
按照如下步骤即可添加骨架,骨架可以是本地的文件也可以是远程地址: [caption id="attachment_4802" align="aligncenter" width="641"]
![new_maven_project](https://static.oschina.net/uploads/img/201612/31204927_rB84.png)
new_maven_project[/caption] [caption id="attachment_4803" align="aligncenter" width="693"]
![remove_archetype_catalog](https://static.oschina.net/uploads/img/201612/31204927_D7gS.png)
remove_archetype_catalog[/caption]
在使用骨架创建maven工程时可能会遇到下面的错误: [codesyntax lang="java"]
org.apache.maven.archetype.exception.ArchetypeGenerationFailure: The defined artifact is not an archetype
at org.apache.maven.archetype.generator.DefaultArchetypeGenerator.generateArchetype(DefaultArchetypeGenerator.java:152)
at org.apache.maven.archetype.generator.DefaultArchetypeGenerator.generateArchetype(DefaultArchetypeGenerator.java:286)
at org.apache.maven.archetype.DefaultArchetype.generateProjectFromArchetype(DefaultArchetype.java:69)
at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.createArchetypeProjects0(ProjectConfigurationManager.java:770)
at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager$5.call(ProjectConfigurationManager.java:719)
at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager$5.call(ProjectConfigurationManager.java:1)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:166)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:142)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:96)
at org.eclipse.m2e.core.internal.embedder.MavenImpl.execute(MavenImpl.java:1348)
at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.createArchetypeProjects(ProjectConfigurationManager.java:717)
at org.eclipse.m2e.core.ui.internal.wizards.MavenProjectWizard$5.doCreateMavenProjects(MavenProjectWizard.java:244)
at org.eclipse.m2e.core.ui.internal.wizards.AbstactCreateMavenProjectJob$1.doCreateMavenProjects(AbstactCreateMavenProjectJob.java:46)
at org.eclipse.m2e.core.ui.internal.wizards.AbstractCreateMavenProjectsOperation.run(AbstractCreateMavenProjectsOperation.java:62)
at org.eclipse.m2e.core.ui.internal.wizards.AbstactCreateMavenProjectJob.runInWorkspace(AbstactCreateMavenProjectJob.java:50)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
[/codesyntax] 这个异常可能是由于您的maven骨架工程中的archetype-metadata.xml文件有问题。其中,archetype-descriptor的属性name是必填项。