`
suhuanzheng7784877
  • 浏览: 704360 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47751
社区版块
存档分类
最新评论

Maven3实战笔记16Maven总结

阅读更多

1.  前言

用了15BlogMaven3的学习笔记,最后想想好像觉得总是比较冷冰冰的,将知识点列出来,停留在如何使用Maven的层面。那么咱们抛开书本,回过头来再看看哪些Maven的功能点,再来总结总结Maven到底为我们做了些什么,使用Maven的好处到底体现在哪里。

2.  Maven改变个人习惯

在没有Maven之前,我们开发一个新项目的时候,总是要引入很多第三方的组件为我们提供相应的服务功能,一般是以jar包的形式提供给我们。那么我们作为开发者一般都是比较关注直接依赖包,比如项目用到了xmemcached作为缓存客户端,而xmemcached组件(1.2.5本版本之前)要想正常使用,还依赖于该组件的同一个作者创建的slf4j组件。slf4j在咱们这个新建立的项目中就属于非直接依赖,间接依赖。在没有别人或者相关文档辅导的情况下,当拿到xmemcached包后是过程中报出了相关错误后才知道缺少了slf4j相关包,之后再打开Google搜索slf4j关键字,从而下载相关slf4j组件。很多时候我们都是这么做的。自从有了Maven后,开发人员其实只需要关注直接依赖就可以了,构建项目时候,Maven会根据组件自身的描述文件pom.xml自动去找寻该组件的依赖包,从而保证组件的正常使用。

而且项目还可以及时使用第三方的组件最新功能体现(稳定版本,非SNAPSHOT),第三方组件的最新版本发布后,Maven仓库会及时反映,下载到本地。

Maven倡导的是约定大于配置,Maven项目的源代码包位置、配置文件位置、测试用例代码位置都是有约定的。出现Maven之前,可能有一些项目,尤其是小项目,把配置文件、源代码、脚本一股脑全放在src下面,这样做其实呢,也不能说不对,就是给其他人看起来代码结构有点乱。Maven规定source code就放在src/main/java下面,配置文件就是放在src/main/resource,这样给人看起来比较清晰,不会给接手项目的人“一坨XX”的感觉。

打包方便,在项目前期,先将pom配置文件写好,之后根据配置文件的打包类型进行打包,这个功能实际上在EJB项目打ear包特别明显。当然了使用IDE,如Eclipse进行打包也麻烦不到哪儿去,只不过有些手工过程比较重复罢了。

3.  Maven改变团队

对于团队来说,Maven可以帮助团队内部、以及不同团队之间进行更好的沟通。团队内部可能进行着不同小模块的开发,但是小模块之间是有耦合、调用、依赖关系的,模块程序更新后,可以及时反映到内部Maven库中,团队内部有一个比较良好的及时构建和使用反馈。当然使用IDE配合SVN插件也可以做到,这种方式仍然是目前很多团队的项目构建方式,根据项目的规模,具体情况具体分析吧,有可能项目比较庞大,同一个团队的人还不在同一个地域,只能对外开放一个url,可以选择IDE配合SVN、也可以选择Maven配合SVN。这个时候可能Maven就比较有优势了,Maven构建的项目能够及时反映和自动下载、构建。

项目可以配合Hudson进行持续集成,持续测试,持续生成报告,持续反映项目的健康状况,持续反映团队状况。对于项目、公司、团队的队员工作情况都是比较清晰的,用数据说话,用邮件提醒驱动开发人员。个人认为,Maven确实能用这些数据反映项目、反映团队、反映队员的状况,也发挥了团队队员的主观能动性。从另一个层面来看,其实是Maven从敏捷开发中得到的其实吧。要求每个队员的水平也比较高,定期就得看看自己修改的部分在持续构建中有没有出问题,出问题立刻打起精神,找问题、解决问题,让项目更健壮。唉~~~资本主义就是要剥削劳动人民的剩余价值,从员工自身的观点来看这种比较紧张的工作气氛,到底是好是坏,短期也许还行,长期如此,精神上、心理压力、体力、精力是否能够承受,对于这个问题笔者觉得还是值得大家讨论的。但是有一点可以肯定,对公司发展、对项目交付、对客户的满意度,起到的作用绝对是积极的……

4.  Mavne改变项目

Maven项目都有特点,源代码、配置文件、单元测试文件夹一般都是按Maven规定,所以一般的Maven项目都比较好阅读,代码放置的位置比较清晰。项目打包后也可以安装到Maven库中,现在很多第三方的开源项目,尤其以Apache项目基本上都是符合Maven规范的。很多研究Apache组织下开源项目的朋友们拿到源代码后都是按照Maven标准去找寻原文件的。这样有一个统一的规范,比如自己开发个小组件,别人阅读起来也能从容入手。基本上从网上下载的第三方开源jar组件,打开META-INF文件夹下都有一个maven文件夹,里面就是该开源项目的Maven描述文件pom.xmlpom.properties

Maven还能生成项目静态站点,该站点风格有点像wiki。该站点既包含了项目的一些基本信息,例如项目介绍、项目成员介绍、项目信息的链接,还能利用Maven插件生成一些报告数据,如测试覆盖率、代码提交情况等等,这样反映一个项目整体状况,也是用数据说话,这个站点大多数情况下是给用户看的,客户除了关心交付物,也关心项目质量,而在用户使用软件之前,最能体现质量的就是这些写在明处的报告信息。Maven出现之前可能是根据项目作出的不同阶段来提交给客户不同的成果物,比如软件的功能做完了,应该提交单元测试覆盖率报告,一般使用Eclipse插件完成,之后生成一个测试报告,也是HTML形势的。到了客户使用后出现的一些问题答疑和使用问题总结阶段,可能会出现一份word文档或者高级一点的Trace来记述客户使用反馈信息。其实这些都可以使用风格统一的Maven生成站点来体现,到最后最终的站点实际上是一份完整的项目文档,之后项目终验阶段,这份完整的项目信息站点还是很有参考价值的。

5.  Maven对于客户来说

其实前面那么多铺垫,都是为了维系客户关系,下次做项目的时候,客户招标就会多倾向你们一些。Maven功不可没,让客户觉得该公司的团队比较“专业”。开发中暴露的问题越早,改得越早,到后来客户那边反馈的问题就越少,中间的交流、沟通成本也就越低。文档越详细,客户使用中就越顺手,满意度也就越高。开发人员节省了项目周期(当然,工作量还是那么多,只不过使用Maven造成的结果是换了一种比较“高雅”的剥削方式罢了),客户付出的成本和时间也就越低,从商务的角度讲,在固定的一段时间内,固有的资金得到了更多的流动,收益也就相应提高。这对于客户来说是比较重视时间的。当然,客户可能不懂技术,但是节省的成本是实实在在的,懂技术客户可能知道Maven,如果项目引入Maven,客户会觉得团队与国际接轨,比较专业,比较靠谱,接触,勾通,包括之后的招标都是比较有利的。

总的来说Maven带来的益处是比较明显的,而且Maven也日趋成熟,使用Maven项目的团队也越来越多。

10
2
分享到:
评论

相关推荐

    Maven3实战笔记(整合)

    从给定的文件信息来看,标题与描述都指向了“Maven3实战笔记(整合)”,这表明文档主要聚焦于Maven3的实践应用与整合经验分享。Maven是Apache软件基金会维护的一个开源项目,是一个项目管理和综合工具,主要用于Java...

    Maven3实战笔记(全)

    《Maven3实战笔记(全)》是一本全面深入介绍Maven3的实践指南,由一位具有独特风格的作者撰写,以其风趣幽默的方式解析了Maven3的各种核心概念和使用技巧。这本书涵盖了从Maven的基础安装与配置,到复杂的仓库依赖...

    Maven3实战笔记.pdf

    标题中提及的“Maven3实战笔记”指向了Maven这款流行的Java项目管理和自动化构建工具的第三个主要版本。Maven自从引入以来,就极大地简化了Java项目的构建过程,提高了项目构建的标准化程度。它使用项目对象模型...

    Maven3实战笔记整合

    根据给定的文件信息,我们可以提取出关于"Maven3实战笔记整合"的知识点。由于文件内容部分出现了大量的乱码和不完整字符序列,无法直接从中提取有用的信息。但是,我们可以根据标题和描述以及通用的Maven知识点,来...

    Maven3实战笔记08Maven反应堆

    ### Maven3实战笔记08——Maven反应堆:深度解析与实战应用 #### Maven反应堆的概念与作用 在深入探讨Maven反应堆之前,我们首先需要理解Maven项目是如何组织和构建的。Maven是一种自动化构建工具,它通过定义项目...

    Maven3实战视频教程(14集)

    课程目录: Maven3_01_maven概览 Maven3_02_maven安装的注意事项 Maven3_03_在eclipse中建立简单的项目 Maven3_04_maven的依赖特性 Maven3_05_maven的聚合和继承 Maven3_06_复习maven的基本...Maven3实战笔记 Maven配置

    Maven3实战笔记

    【Maven3实战笔记】 Maven3是一款强大的Java项目管理和集成工具,由Apache软件基金会开发。它通过提供一套标准化的构建、依赖管理和项目信息管理的方式来简化项目的生命周期。本实战笔记将深入探讨Maven3的核心概念...

    Maven3实战笔记04Maven的生命周期和插件

    3. **compile**:执行Default生命周期中的`compile`阶段,调用`maven-compiler-plugin`的`compile`目标来编译源代码。 4. **test**:执行Default生命周期中的`test`阶段,调用`maven-surefire-plugin`的`test`目标来...

    Maven3实战笔记05仓库依赖解析与插件解析

    ### Maven3实战笔记05仓库依赖解析与插件解析 #### 一、Maven仓库依赖解析 Maven 是一个项目管理和构建工具,它通过一种称为“仓库依赖解析”的过程来管理项目的依赖关系。仓库依赖解析是指Maven如何查找并解决...

    Maven3实战笔记03Maven仓库

    #### 3. Maven仓库的作用 - **依赖管理**:Maven仓库使得依赖管理变得简单,避免了手动下载和配置依赖的繁琐步骤。 - **版本控制**:通过Maven仓库,可以方便地管理和控制不同版本的依赖,确保项目使用的是一致的...

    Maven3实战笔记02项目需求和模块分析

    ### Maven3实战笔记02:项目需求和模块分析 在Maven3的实战学习中,第二部分着重于项目需求分析与模块划分,这是构建大型、复杂项目时的基础工作,能够帮助开发者更好地理解项目架构,合理分配资源,提高开发效率。...

    Maven3实战笔记14Maven生成项目站点

    0.0.1:8443/svn/mysvn/mysrc/01-OpenSource/maven/MavenAccount-aggregator</url></scm>3. Maven 项目站点详解Maven 的项目站点功能是一个强大的文档生成工具,它可以帮助开发者生成项目相关的各种报告,包括但不...

    Maven入门实战笔记02-基础(2)

    【标题】"Maven入门实战笔记02-基础(2)" 涉及的主要知识点是Maven的基础使用,包括项目的创建、配置文件的理解以及依赖管理等。Maven是一款强大的Java项目管理和集成工具,它帮助开发者统一构建过程,管理项目的依赖...

Global site tag (gtag.js) - Google Analytics