本文大约1026个字,阅读时间4分钟。 主要介绍了Maven名字的由来、Maven产生的背景和Maven的主要功能。
问题:Maven是啥?
大多数人都用Maven来管理Java项目的依赖,这个应该是Maven的主要功能没跑了,不过我们还是带着这个问题自己去探索吧!
名字由来:
根据Maven官网的解释,Maven这个单词来自意第绪语,意为知识的积累者(accumulator of knowledge),Wikipedia上的解释是:在特定领域极具权威并且乐于将知识分享、传承给他人的专家。咳咳……老外给项目起名字就是有(ai)意(zhuang)思(bi)。
背景介绍:
Maven当初是为了简化Jakarta和Turbine两个项目的构建过程而诞生的。这些项目当初有各自的Ant构建文件并且还有共同使用的JAR文件被重复的提交到CVS上。因此Maven试图将所有Java项目的构建过程标准化;确保一个项目的组成部分有清晰明确的定义;可以方便的发布项目;可以共享多个项目用到的JAR文件。
它的目标:
让开发人员可以在较短的时间内快速厘清项目结构,更快理解整个项目。为了达到这个目的,Maven从以下几个方面入手:
- 简化项目构建过程
- 提供统一的构建系统
- 提供有效/高质量的项目信息
- 提供开发过程的最佳实践指南
- 透明迁移到新功能
目标说明:
- 简化项目构建过程
虽然使用Maven进行项目构建时,你还是需要对底层机制有所了解,但是Maven还是做了不少工作来对你隐藏这些繁琐的细节。
- 提供统一的构建系统
Maven是通过POM(Project Object Model)文件和一系列插件(Plugin)来构建项目的。当你熟悉了某一个用Maven构建的项目,那么对于其他用Maven构建的项目你也可以快速熟悉。
提供有效/高质量的项目信息
Maven可以通过POM文件以及项目的源代码来生成项目信息。例如,Maven可以提供:
- 更改日志(用源码管理工具生成)
- 交叉引用
- 邮件列表
- 依赖清单
- 单元测试报告(含覆盖率)
提供开发过程的最佳实践指南
Maven通过收集现行的开发最佳实践,来指导用Maven构建的项目。例如:单元测试是Maven构建中的一个部分,Maven对单元测试应用如下的最佳实践:
- 把单元测试代码和项目代码分开,但是在平级的源码树中
- 使用测试用例命名约定来定位和执行测试
- 让测试用例来初始化测试环境而不是为测试构建特定的版本
- Maven还可以为项目的目录结构、发布管理、缺陷追踪提供指导和帮助。
- 透明迁移到新功能
当Maven/Maven插件更新时,无须做改动/较少改动,即可享受新功能
它不是……
- 建站工具或文档管理工具
- 可以下载依赖的Ant扩展
- 一组可重用的Ant脚本
结语
本文是百科百面系列的第一篇文章,也是Maven专题的第一篇文章,对于文章的形式、内容或者技术专题有想法的朋友,欢迎留言~
下一篇文章将会带大家一起安装和体验Maven,下次见!