您的位置:首页 > 其它

【原创】使用mvn archetype插件自定义项目骨架模板

2014-12-15 17:28 519 查看
1.前言
在工作过程中必然会遇到创建项目的蛋疼事,一个项目包含茫茫多的配置文件。例如:Spring、mybatis、log4j、pom.xml、git等,其他的还包括项目目录骨架。整个过程下来顺利的话几十分钟,如果对公司项目配置不了解的情况下,几个小时都是有可能的。
maven的强大就不言而喻了,自定义项目骨架主要利用到 archetype插件。在IDE中创建maven项目时,可以选择archetype类型快速创建项目目录。例如最常见的maven-archetype-plugin 的quickstart。maven考虑到通用性,提供的是最简单的目标。
新建项目时,配置文件往往是从其他项目拷贝过来的,拷贝的问题在于很容易踩坑,并且不容易定位问题。
利用maven一键生成项目骨架可以解决所有的问题,下面切入正题吧。

2.创建模板项目
模板项目也是一个普通的maven项目,但是其有特定的目录结构。创建模板项目方式不同于一般的maven项目。
第一步:首先找一个现有原型项目,这里假设原型项目为A项目,A项目具有所有详细的配置信息。

第二步:改造A项目
删除A项目里所有特定业务相关的代码、文件。保留最后生成的最小配置文件集合。一般项目里的配置文件包括以下内容:

pom.xml的jar包依赖、插件配置,保留最小依赖集
Spring配置
log4j.xml配置
持久层框架配置

另外还有项目的基本包结构配置,常见的包包括:dao、service、service.impl、util、entity。
最好为每个配置文件编写一个demo,并注释掉,这样方便团队其他成员理解和使用。为每个包目录编写一个demo,例如dao层。因为大部分公司会二次开发自己的dao层框架, 对于新手来说可能不是很熟悉,这时候一个demo能起到非常大的作用。
到这步一个项目基本骨架雏形已经成型了,其实在整个过程中这一步是真正我们需要关心的。一个干净、易用的模板才是最好的。
这里我们称改装后的A项目为A-min项目.

第三步: 从A-min项目中创建maven骨架项目
在A-min项目的根目录里执行 mvn archetype:create-from-project
成功执行完之后,在target/generated-sources/ 下有个archetype目录,把archetype文件夹拷贝到自己的workspace下,用任何IDE或者编辑器打开这个项目。



图:2-1
可以看到这个目录其实就是普通的maven项目,也就是我们最终的骨架模板项目,我们称之为A-template项目。
有几个目录、文件需要说明:

src/main/resources/archetype-resources 通过A-template骨架创建的项目包含的所有的文件和目录都在这个目录下。
src/main/resource/META-INF/maven/archetype-metadata.xml 此文件是配置文件,告诉archetype插件,archetype-resources里面哪些文件需要包含到创建出的项目里。打开这个文件发现有个fileSets标签,包含一系列的fileSet标签。不难发现fileSet就是对archetype-resources下的资源描述。

第四步:改造A-template
archetype:create-from-project并非完全智能,需要自己稍加修改。

修改pom.xml文件

定义你的骨架项目的maven坐标 (groupId ,artifactId,name,version)
修改packing的值为jar
删除scm标签,保留distributionManagement标签

修改archetype-metadata.xml,在fileSets同级下增加requiredProperties标签。requiredProperties定义模板项目中一些参数值,内置的参数包括:groupId,artifactId,version,package。自己可以提供这些参数的默认值,也可以增加自己额外的参数。大部分情况下,内置的参数足够用。fileSet标签有一个filtered=“true”属性,表示该fileSet可以使用参数变量。在文件中引用参数变量的方式${参数名},例如${package}.通常生成A-template项目时,archetype插件会扫描A-min所有的文件,把需要替换为参数的地方自动替换。毕竟代码没有那么智能,有些地方会有问题。所以,我们要检查每个文件的参数部分是不是我们预期的。增加参数、删除参数来达到我们的要求。



图:2-2
第五步:部署我们的模板项目到本地仓库测试
执行mvm clean install
到这里我们的模板骨架项目基本完成。

3.使用自定义的模板创建项目

方式一:使用命令行
在自己的workspace下执行 mvn archetype:generate -DarchetypeCatalog=local -o
选择刚才的模板项目的编号,按照提示输入参数值。这样项目就创建完毕了。如果找不到我们的模板项目,检查一下~/.m2/目录下是否有archetype-catalog.xml文件。如果没有在A-template的根目录执行一下
mvn archetype:update-local-catalog -o

方式二:通过IDE创建(推荐)
在IntelliJ 中创建module时,选择 create from archetype ,并Add archetype填写我们的A-template项目的maven坐标,设置参数值就可以生成项目了,非常方便。

4.部署到公司内部的maven中央仓库

经过反复测试之后,我们的模板项目就可以发布了。把我们的模板项目部署到公司内部的maven仓库。其他团队成员就可以通过方式二使用我们的骨架模板创建项目了。IDE帮我们自动下载模板项目的jar包到本地仓库。方式一则需要自己手动下载 ,在任何一个项目里添加我们的模板项目依赖,执行maven eclipse:eclipse命令,就会下载jar包。方式一比较麻烦,推荐使用方式二,简单易用。

5.总结

网上有很多相关的文章,但都不是很详细。本人在做的过程中踩了很多的坑,通过慢慢的调试摸索终于制作完毕,希望对大家有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐