Maven是什么及其到底是解决什么问题的?

Maven是什么及其到底是解决什么问题的?

前言

整理 Maven 相关文章的起因,其实是一直在用 Maven 构建项目,但对其中的

<build>
    <plugins>
        <plugin></plugin>
    </plugins>
</build>

部分理解不是很透彻,所以想找官方材料和相关书籍进行梳理一下,但也因此不得不先要面对一个问题:Maven 是什么? 它是解决什么问题的?

本篇文章,主要梳理了 Maven 是什么?能帮我们解决什么问题?它有哪些特性?它的核心关键点有哪些?

What is Maven

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.

Maven 是一个跨平台的项目管理工具,是 Apache 组织中的一个颇为成功的开源项目。

Maven 主要服务于基于 Java 平台的项目构建、依赖管理和项目信息管理

Maven 是一种构建工具,一种项目管理工具,一种用来运行构建任务的抽象容器。

Maven 是一个项目管理工具,它包含了

  • 一个项目对象模型(Project Object Model),
  • 一组标准集合
  • 一个项目生命周期(Project Lifecycle),
  • 一个依赖管理系统(Dependency Management System),
  • 和用来去运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑

当你使用 Maven 的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用模切的逻辑,这些逻辑来自共享的(或自定义的)插件

Maven 是优秀的构建工具

构建:我们开发工作中除了编写源代码,还有编译、运行单元测试、生成文档、打包和部署等工作;构建就是让这一系列工作完全自动化,只需要一条简单的命令,所有繁琐的步骤都能够自动完成。

Maven 能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署

Maven 是跨平台的,无论在 Windows 上,还是在 Linux 或 Mac 上,都可以使用同样的命令。

我们一直在不停地寻找避免重复的方法。设计的重复、编码的重复、文档的重复,当然还有构建的重复。 Maven 最大化的消除了构建的重复,抽象了构建生命周期,并且绝大部分的构建任务提供了已实现的插件,我们不再需要定义过程,甚至不需要再去实现这些过程中的一些任务。

Maven 抽象了一个完整的构建生命周期模型,这个模型吸取了大量其他的构建脚本和构建工具的优点,总结了大量项目的实际需求。如果遵循这个模型,可以避免很多不必要的错误,可以直接使用大量成熟的 Maven 插件来完成我们的任务。此外,如果有特殊需求,我们也可以轻松实现自已的插件。

Maven 帮我们标准化构建过程。有了 Maven 之后,所有项目的构建命令都是简单一致的,这极大地避免了不必要的学习成本,而且有利于促进项目团队的标准化。

小结: Maven 作为一个构建工具,不仅能帮我们自动化构建,还能够抽象构建过程,提供构建任务实现;它跨平台,对外提供了一致的操作接口,这一切足以使它成为优秀的、流行的构建工具。

Maven 不仅仅是构建工具

依赖管理:几乎任何的 Java 应用都会借用一些第三方的开源类库,这些类库都可通过依赖的方式引入到项目中来。随着依赖增多,版本不一致、版本冲突、依赖臃肿等问题都会接踵而来。Maven 提供了提供了一个优秀的解决方案,它通过一个坐标系统准确地定位每一个构建(artifact),也就是通过一组坐标 Maven 能够找到任何一个 Java 类库。 Maven 给这个类库世界引入了经纬,让它们变得有秩序,于是我们可以借助它来有序地管理依赖,轻松地解决那些繁杂的依赖问题。

管理项目信息:Maven 还能帮助我们管理原本分散在项目中各个角落的项目信息,包括项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等。

生成站点及报告:通过Maven自动生成的站点,以及一些已有的插件,我们还能够轻松获得项目文档、测试报告、静态分析报告、源码版本日志报告等非常具有价值的项目信息。

中央仓库:Maven 还为全世界的 Java 开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。通过一些 Maven 的衍生工具(如 Nexus ),我们还能对其进行快速地搜索。只要定位了坐标,Maven 就能够帮我们自动下载。

Maven 对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优于配置(Convention Over Configuration)。

总结

Maven 是什么?

Maven 是一个项目管理和理解工具,基于项目对象模型,可以管理项目的构建、报告和文档

Maven 最大化的消除了构建的重复,抽象了构建生命周期,并且绝大部分的构建任务提供了已实现的插件

Maven 是一个项目管理工具,它包含了:

  • 一个项目对象模型(Project Object Model),
  • 一组标准集合
  • 一个项目生命周期(Project Lifecycle),
  • 一个依赖管理系统(Dependency Management System),
  • 和用来去运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑

Maven 为软件项目的语义一致性描述的开端提供了一个基础。

Maven 作为一个构建工具,不仅能帮我们自动化构建,还能够抽象构建过程,提供构建任务实现;它跨平台,对外提供了一致的操作接口。


Maven 能帮我们解决什么问题?

Maven 帮我们标准化构建过程。有了 Maven 之后,所有项目的构建命令都是简单一致的,这极大地避免了不必要的学习成本,而且有利于促进项目团队的标准化。

Maven 能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。

Maven 还能帮我们解决:依赖管理管理项目信息生成站点及报告、免费的中央仓库

公众号

知行chen

参考

官网: https://maven.apache.org/

官方文档: https://maven.apache.org/guides/index.html

github: https://github.com/apache/maven

《Maven 权威指南》

《Maven 实战》 许晓斌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值