您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Maven 简介

那究竟什么是 Maven 呢,在 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 是软件工程的项目管理工具,基于工程对象模型(POM),Maven 可以从中央信息篇中来构建项目,报告和文档

从上面的介绍中,我们可以看到 Maven 的主要是管理项目,构建项目

关于 Maven 的由来,据其创始人者 Jason Van Zyl 描述,是为了更加便利地建设 Jakarta 项目而创立的项目。在当时,比较流行的项目构建工具是 Ant,但是,个阶段中,各种 Java 项目之间是没有什么规范的,新创建项目的时候,就需要重新编写对应的构建脚本。Jason 就相对应设计出一套标准的项目结构,标准的构建方式,用来简化项目的构建。2003 年的时候,Maven 已经是 Apache 基金会的顶级项目了。

很多著名的项目,都是历史的产物。在当时,随着 Java 语言的流行,越来越多的项目开始使用 Java ,但是当时的构建工具并不能简单地完成项目构建的流程,种背景下,简单,方便,标准化的构建工具-- Maven 就产生了。

从 Maven 的官网中我们就可以看到以下几个特点:

Making the build process easy:意思是简化构建过程,顾名思义,让构建的过程来得更简单;

Providing a uniform build sy:意思是提供统一的构建系统,Maven 提供了统一的构建系统。例如:Maven 使用 POM 模型以及一系列的相关供开发者来使用;

Providing quality project information:意思是提供优质的项目信息,在使用 Maven 的过程中,你可以通过 Maven 来获得很多关于项目的信息,例如:已经覆盖的单元测试报告,项目的依赖列表等等;

Providing guidelines for best practices development:意思是提供最佳实践开发指南,Maven 致力于整合开发过程中的最佳实践,并引导人们朝着这个前进。例如:在项目过程中 Release 版本和 snapshot 版本的管理,以及 Maven 项目标准化的项目目录结构。

总之呢,Maven 的核心是约定大于配置,它的初衷就是帮助程序开发者在最短时间内完成项目开发过程中的每个过程,目标就是更简单,更统一,更。

但是,这些问题都是有可以有办法的,我们后续会慢慢一一介绍。

在 Java 开发的世界中,有三大主流的构建工具,分别是 Ant ,Maven ,Gradle。

其中 Ant 出现的世界最早,能够提供编译、测试、打包的,但是 Ant 缺乏对依赖的管理,以及标准的项目结构。

后来 Maven 的出现,了 Ant 所不能满足的两个问题,从创建项目到构建及发布项目的整个过程定义了一套完整的规范,并且提供中央仓库,对依赖进行管理。

后来,随着 Android 的流行,近年来,以 Gradle 作为项目的构建工具也越来越流行。Gradle 在 Maven 的基础上,使用基于 Groovy 的特定领域语言(DSL)来完成配置声明,相较于 XML 来说,更加灵活。
目前,Maven 和 Gradle 基本上算是平分秋色的局面,在实际的开发中,项目管理更倾向于使用 Maven,而在移动端开发中,Gradle 的占比更大。当然两者之间也有很多相通的地方,比如依赖管理,一致的项目结构。

Maven 从发布到现在已经经历过很多个版本迭代,目前最新的版本是 2019-11-25 发布的 Maven 3.6.3 版本。

说到这个问题,我们首先要看一下,如果没有 Maven,那么我们的工作是什么样子的呢?

场景一

当我们在开发过程中,当我们开发某个新或者修复了某个 Bug,都需要手动进行整个项目编译,运行单元测试,项目文档,打包,部署环境这些步骤。一旦需要重新的时候,便要将上述的操作重复一遍。机械性的重复劳动充斥着整个开发过程;

场景二

由于不同的人可能会有不同的习惯或者说是个人偏好,每当我们新建项目的时候,所建出来的项目可能会千奇百怪,这也给后续的维护带来了诸多的不便;

场景三

当项目需要依赖某个 jar 包的时候,需要到互联网上去寻找对应的 jar 包,找到 jar 包之后,将这个 jar 包到项目的 lib 目录下,项目组里面不同的人可能会找到不同的 jar 包,不同的 jar 包直接可能会存在冲突,这个时候,就需要去手动冲突;

看到这里,只想说一句,我太难了。但是,不要慌,Maven 的存在,就是为了帮助这些问题。

使用 Maven 之后,只需要执行命令就可以完成编译,运行单元测试,打包,部署的整个流程;并且 Maven 以 POM 的形式来管理 jar 包依赖;还有一点就是,使用 Maven 构建出的项目,结构统一,方便后续的维护。

本教程当中使用了一些 Java 项目作为例子,所以需要了解简单的 Java 基础。

在本课程中,我们首先会对 Maven 的核心概念进行讲解,并且,通过一些简单的项目,来加深对这些概念的理解,在课程的过程中,如果遇到平时工作时常使用的点,则会穿插一些实际工作中的最佳实践,方便在工作中能够学以致用。


联系我
置顶