Maven是什么

介绍

Maven是意第绪语的词汇,意思是“知识的积累”,最初是在Jakarta Turbine项目中尝试使项目构建过程简化,期望有一种标准的项目构建方式,能清晰的表达项目的构成、简单的方式发布项目、能够在不同的项目中分享JAR。现在Maven已经能够用于构建和管理任何Java项目,使得Java开发者的日常工作更加简单。

Maven的目的

Maven的主要目标是使开发者能够快速的理解开发工作的完成状态,为了实现这个目标,Maven包含以下特性:

  • 使构建过程更加简单
  • 提供统一的构建系统
  • 提供高质量的项目信息
  • 鼓励更好的开发实践

    使构建过程更加简单

    使用Mave不需要了解底层原理,Maven为开发者屏蔽了很多细节

提供统一的构建系统

Maven使用Project Object Model(POM)和一系列的插件构建项目

提供高质量的项目信息

Maven提供的项目信息源自于两部分,一部分来自POM,一部分来自项目源代码。Maven能够提供:

  • 源代码控制中的变更日志
  • 交叉引用的源代码
  • 项目的邮件列表
  • 项目使用的依赖
  • 单元测试报告

第三方代码分析产品也提供了Maven插件,能够适配Maven的标准。

鼓励更好的开发实践

Maven鼓励更好的开发实践,为此会搜集相应的指导原则,例如单元测试的规格、执行和报告是项目构建的一个环节,当前单元测试最佳实践指导原则为:

  • 单独保存测试源代码
  • 使用名称去定位执行测试用例
  • 在测试用例中可以设置环境信息

Maven也会改进项目工作流,例如版本和缺陷的管理。
Maven也会对如何设置项目目录布局提供规范,如果有些项目由于历史原因不能修改为该结构,那么就不能使用Maven。

对Maven的误区

有时人们会对Maven有以下理解:

  • Maven是一个建站和文档工具
  • Maven继承了Ant,能让你下载依赖
  • Maven是一系列可复用的Ant脚本
    尽管Maven可以做到这些,但这些并不是Maven的所有特性,而且Maven的目的也完全不同。

Maven的主要功能

  • 简单的项目创建,可以在几秒钟创建一个新的项目或者模块
  • 在任何项目中的用法相同,降低了学习成本
  • 优秀的依赖管理,包括自动更新、依赖关闭
  • 支持多项目管理
  • 大量且不断增长的组件库
  • 可扩展,支持Java或者其他脚本语言的插件
  • 只需很少或不需要额外配置就可以立即访问新特性
  • 在Maven之外的用于依赖管理和发布的Ant任务
  • 基于模型的构建:Maven能够将项目构建成预先定义的类型,例如JAR、WAR或者项目的元数据,并且在大多数场景下不需要任何的自定义编码
  • 一致的项目信息网站:使用相同的元数据来描述构建过程,Maven能够生成包含文档信息的web网站或者PDF
  • 版本管理和发布:不需要额外的配置,Maven可以集成你的代码控制系统,录入svn或者git,管理项目的版本发布,也可以发布版本到其他的系统的依赖中。Maven能够发布完全独立的输出产物,例如Jar和包含依赖和文档的档案或者源代码
  • 依赖管理:Maven鼓励使用中央仓库,你可以使用Maven从中央仓库下载任何需要的JAR报,就像Perl的CPAN,用户可以在不同的项目中复用Jar包。
请使用浏览器的分享功能分享到微信等