江湖上多的是功能华丽的项目原型/骨架生成工具,但最后,反而是功能简单的Maven Archetypes渐渐有了一统的希望。
无它,先把自己收拾得简单易用,然后作为一个江湖大佬(maven)的"官方"小弟,再有另一些江湖大佬(appfuse,strust2,cxf)使用示范一下,就是现在的上位秘诀。
和很多生成工具一样,Maven Archetypes 的功能就是从Velocity模板中替换变量,并根据package 名扩展一下java文件的目录结构而已。
Advanced Usage 讲解了一个完全的Maven Archetype周期:
- mvn archetype:create-from-project 先从一个已有的项目生成Archetype模板到 target/generated-sources/archetype。
这还是需要程序自己有点小聪明的,要找准package name和变量,将变量转为符号,将目录结构收缩。
- 进到目录中,mvn install 将Archetype模板安装到本地maven仓库里。
- 在新的目录中,mvn archetype:generate -DarchetypeCatalog=local ,交互式的输入项目名,package名等变量,即生成项目。
这里,2.0 Alpha3版比原来的1.0 Alpha7改进良多,一是有了从已有项目爬出模板来的命令,二是生成项目时有了交互式的输入,三是控制文件的改进(支持Ant语法批量定义等)。
新的控制文件见META-INF/maven/archetype-metadata.xml ,原来1.0版的文件已经作废。
控制文件可以新增自己的变量,控制目录是否需要velocity替换变量,是否需要根据package名扩展目录树。
详见FAQ中的How metadata on an archetype is stored?