在上一节中(创建自定义archetype)我们手动创建了一个项目模板,经过5步能创建出一个项目模板,如果我有一个现成的项目,想用这个项目作为模板来生成其他项目呢?Maven提供了基于项目生成archetype模板的能力,我们分3步来讲解
我们有一个DiveInSpring工程,项目结构如下图,有个DiveInMain.java是应用的启动类,service包下有个ProductService.java类。现在要基于这个项目生成一个archetype项目模板。

通过执行mvn archetype:create-from-project,Maven自动为我们生成archetype模板项目的工程,存放在target/generated-sources/archetype下,我们看一下生成的目录结构,可以看到很多熟悉的身影,archetype-metadata.xml、archetype-resources等等。

target/generated-sources/archetype就是我们的项目模板,现在我们要将它安装到仓库,执行mvn install通过输出查看GAV信息
- D:\Workspace\DiveInSpring\target\generated-sources\archetype>mvn install
- ...
- [INFO] --- install:3.1.2:install (default-install) @ DiveInSpring-archetype ---
- [INFO] Installing D:\Workspace\DiveInSpring\target\generated-sources\archetype\pom.xml to C:\Users\randa\.m2\repository\
- com\keyniu\dis\
- DiveInSpring-archetype\
- 0.1\
- DiveInSpring-archetype-0.1.pom
- ...
你也可以在对应的目录下,查看生成的pom.xml文件

使用mvn archetype:generate命令,利用上面生成的模板,创建工程,使用如下命令创建新项目
- mvn archetype:generate -DarchetypeGroupId=com.keyniu.dis
- -DarchetypeArtifactId=DiveInSpring-archetype
- -DarchetypeVersion=0.1
- -DgroupId=com.keyniu.generate.example
- -DartifactId=GenFromProject
- -Dversion=0.1
- -Dpackage=com.keyniu.gen.exa
- -DinteractiveMode=false
生成工程之后,我们使用IDE打开工程,或者使用mvn命令编译打包,然后执行该工程,可以看到是执行成功的。
