面试的时候,对于资深岗位,我一般都会问候选人,有没有通过技术手段,提高团队的工作效率的案例。有些回答,自己开发过团队的中间件,有些回答自己,推动过团队规范落地。但是遗憾的是,更多的时候,候选人没有思考过这个问题,只把自己的手头的工作做好,没有想过技术影响力。
今天我们聊下项目原型。我第一次搭建项目原型的时候,是我参加工作后的第一年,从0搭建,大约两天的时间。项目结构,spring框架,orm,连接池,数据库,单元测试等等。
后来我开发过不少项目,搭建原型,大约也会花费半天的时间,主要是优化之前,本地保存的项目原型。但是团队中其他同学,搭建项目的时候,还是会花不少时间,同时各个项目的结构迥异,不利于团队管理。
后来团队中来了一个资深开发,他对maven比较熟悉,提到了maven项目原型,并在很短的时候,搭建了一个团队共享的脚手架。这些工作极大的解放了大家生产力,带来的具体影响是后面新开服务的时候,不再考虑项目搭建的时间。
下面我简单介绍下,如何搭建一个团队内,或者公司层面的脚手架。
官方文档移步:Maven – Guide to Creating Archetypes。本文主要侧重于工程实践。
第一步:我们准备一个比较完备的项目原型,此原型不包含具体业务逻辑,主要侧重于项目结构,常见的配置,工具包,以及框架优化。
如上截图,我们的项目结构,是参考DDD领域模型,以及MVC分层,主要考量的是业务和技术隔离,以及业务逻辑分层合理。同时项目原型中,还包含我们团队的一些配置,比如分布式限速,分布式锁,异步组件,es组件,feign连接池,tomcat配置,日志规范等等。
第二步:执行mvn clean archetype:create-from-project
此时原型项目的target目录下,就是我们需要希望分享出去的原型文件。如下图
第三步:新开一个空的脚手架项目,用来管理原型文件,以及定制、发布原型。并将第二步的原型文件copy进去,项目结构如下
注意需要将第二步的原型文件,copy到src/main/resources下。
第三步:修改原型文件的archetype-metadata.xml文件,增加requiredProperties,主要目的是,其他同学使用脚手架,搭建项目的时候,包名、项目坐标可以自由定制。
再者 修改原型文件的pom.xml中的groupId,artifactId,version等信息替换成变量,和requiredProperties中保持一致。
第四步,发布脚手架 jar到私服。
修改脚手架项目的pom增加,公司的私服地址,配置好账户,密码。就可以发布到私服上去了。
第五:使用脚手架,搭架自己的服务。
简单在写一个脚本,创建自己的项目了脚本如下:
执行脚本,至此大约1分钟就可以根据脚手架,创建一个新的项目了。
本文暂时没有评论,来添加一个吧(●'◡'●)