java开发,maven多模块项目管理的喜与恼

谈到java开发的多模块组织,我不禁乐道于maven的强大与高效,以至于在上一年进行前端规范化工作时,还时不时地拿gulpmaven进行对比。

谈到maven就不能不谈ant,早些年代的java库管理多是ant方式,项目需要什么jar包,就往项目的lib文件夹下塞,包出现了冲突解决起来比较费劲。Maven的方式叫做反应池,在项目中只需要一个pom.xml文件就可以管理包的依赖关系,而且可以通过视图能清晰地看到层次依赖关系,便于包冲突的分析与解决。而依赖的jar包文件放在当前用户的.m2文件夹下,打包时,又自动把依赖包组织起来。

Maven除了优秀的库依赖管理与插件依赖管理(这里暂时不多介绍),还有一个优秀的特性——项目模块依赖管理——这使得一个大的项目可以任意拆分成多个相对独立的原子功能(可以是业务功能点也可以是工具类库)。在实际工作中,我通常把工具类库打包成jar,把组织级别的业务功能点打包成war作为微服务。

Maven-module多模块组织固然有如此大的优势,但刚开始过度的原子化分割,是的项目后期维护出现了一定的难度:

一、前期技术储备不足,在eclipse中使用时,每次更新jar模块后,都要maven install下,把jar模块安装到本地库里。但这个问题是,随着项目模块的增加,没修改几行代码就要执行次这个命令,很耗费时间。当然,后期找到了正规的解决方法,但偶尔出现的问题,还是使得团队成员退回install方式。

二、后期维护成本较大。模块过多而且依赖复杂的后果就是,牵一发而动全身。有的功能,管理后台依赖了,会员也依赖了,一次改动,如果测试补充分,很容易添加新的bug.

三、新的团队成员上手难。复杂的项目结构,无疑为新成员设定了很高的门槛,光分析一个业务逻辑就好跨越好几个jar

根据以上几点,我把全公司的项目模块归类为两大类。一个是组织级别的框架模块,一个是项目级别的项目模块。框架模块可以成为项目前期技术选型的素材,优秀的项目模块又可以完善框架模块。两者相辅相成,当然两个都是通过maven-module的形式进行管理。

在业务系统中,在单体模式(这个项目就是一个war)与之前过度分割的原子模式之间进行折中。把整个项目定义为一个pom项目(maven项目有三种类型pom/jar/war),进行项目依赖库与插件的版本控制;每个业务端(比如,管理后台、商家后台、会员中心等)作为war模块,每个war模块相对独立,如果出现业务交集,通过前端调用不同war的接口进行整合,每个war模块所依赖的库或者插件都从父级的pom项目中选定。

业务系统中引来的工具类,在项目阶段审核后提交到框架模块的工具包里统一管理。业务系统中可重用的服务(如:登陆、鉴权、工作流等),则在框架模块中进一步抽象成为微服务。

一个项目的完成,不仅仅是交活收钱,对于公司来说,更大的财产是组织过程资产的积淀。

2017遇见更好的自己

IT技术

(一)前端技术

推广并监督gulp在前端项目开发过程中的应用。

抽象并组织前端UI模块,并初步实现UI模块的复用性。

初步了解reactangular前端框架的使用场景与使用规范。

(二)后端技术

完善代码生成工具(codecoder)的易用性。

深入了解UMLRUP,并进行应用。

培养源于优秀源代码的习惯。

进一步了解并应用设计模式。

进一步了解jvm实现原理。

(三)自动化运维技术

初步了解自动化运维工具。

(四)互联网运营技术

了解提高流量转化率的方法。

(五)大数据处理技术

夯实大数据相关的数据基础。

了解马尔可夫算法、贝利叶算法与人工神经网络算法。

项目管理

(六)范围管理

初步掌握做需求分析的能力,能够根据需求进文档化与uml建模。

(七)时间管理

能够尽量准确的评估任务时间,并控制任务进度。

(八)质量管理

规范项目基本文档:需求分析文档、系统架构文档、系统部署文档、接口文档、工作分解结构。

规范java编程与前端编程的基本准则。

(九)人力资源管理

建设学习型知识分享型团队。

(十)沟通管理

交流做到“不卑不亢”。

能够与客户进行有效交流,了解到客户的真实需求。

团队内部做到平等无障碍的沟通。

个人能力

(十一)自我情绪调节能力

能够比较好的进行自我情绪调节。能够排解、转移不良情绪的影响。

(十二)自学能力

能够维持高效的自学能力,能静心学习并掌握理论基础知识。

(十三)沟通能力

能做到有效沟通、积极沟通、理智沟通。

(十四)写作能力

对工作与学习所掌握的知识,通过写作的形式进行归纳总结,并养成一定的写作风格。

项目管理“铁三角”

项目的范围管理、时间管理、成本管理构成了决定项目成败(一般以项目的质量作为评估依据)的“铁三角”。范围扩大,要通过增加项目的时间与成本保证项目的质量,或者通过降低质量要求以符合时间或者成本的要求;时间压缩,要通过范围的缩小(分清主次)与增加成本(加人加班)的方式解决;成本缩减,要通过范围的缩小(分清主次)的方式处理。

当然,范围、时间、成本之间的制约关系是必然存在的,但在具体实施时,要根据具体项目的实际情况而采取合适的方法。——有的项目有不可变更的时间节点、有的有严格的质量要求、有的有明确的成本制约。

项目管理基础:九大知识领域与五大过程组

项目管理知识体系分为九大知识领域与五大过程组。

九大知识领域包括:范围管理、时间管理、成本管理、质量管理、整合管理、人力资源管理、沟通管理(包括干系人管理)、采购管理、风险管理。五大过程组包括:启动过程组、计划过程组、执行过程组、监控过程组与收尾过程组。以五大过程组为横坐标、九大知识领域为纵坐标构成的二维矩阵里分布着44个子过程(每个子过程又可以分为启动、计划、执行、监控、收尾五个阶段),每个子过程又有着自己的输入项、输出项与工具(方法论)。

继续阅读项目管理基础:九大知识领域与五大过程组

距离2017年上半年软考(2017年5月20日)还剩96天!

距离2017年上半年软考(计算机技术与软件专业技术资格(水平)考试)还剩96天!

其报名时间,各位参考下,别忘记了报名,报名地址:http://www.ruankao.org.cn/

内蒙古2017上半年软考报名时间:215日—310日。

福建2017上半年软考报名时间:31日开始。

云南2017上半年软考报名时间:3-4月(具体时间待定)。

海南2017上半年软考报名时间:213-313日。

青海2017上半年软考报名时间:227-312日。

江苏2017上半年软考报名时间:313-421日。

浙江2017上半年软考报名时间:31日开始。

湖北2017上半年软考报名时间:即日起 至 415日。

湖南2017上半年软考报名时间:320-417日。

四川2017上半年软考报名时间:215-315日。

山东2017上半年软考报名时间:314-323日。 继续阅读距离2017年上半年软考(2017年5月20日)还剩96天!