一、概述

Maven(“专家”、“内行”),是Apache的一个纯java开源项目。

Maven是一个项目管理工具,可以对java项目进行构建、依赖管理。当然,Maven也可以用于构建和管理各种项目,例如:C#、ruby等。

二、Maven项目构建功能

1.1、项目构建过程包括:

  • 源代码
  • 编译
  • 测试
  • 打包
  • 部署
  • 运行

1.2、传统项目构建过程:

  1. idea、eclipse中创建java web项目
  2. 在工程中编写源代码及配置文件等
  3. 对源代码进行编译:.java文件编译成.class文件
  4. 执行junit单元测试
  5. 将项目打成war包部署到tomcat

1.3、Maven构建项目过程:

Maven将项目构建过程标准化,每个阶段使用一个命令完成

maven编译顺序 maven编译项目_jar包

  1. 清理:删除以前编译结果,为重新编译做好准备。
  2. 编译:将java源程序编译为字节码文件。
  3. 测试:针对项目中关键点进行测试,确保项目在迭代开发中关键点正确。
  4. 报告:在每一次测试后以标准格式记录和展示测试结果。
  5. 打包:将一个包含诸多文件的工程封装为一个压缩文件供安装和部署,java工程对应jar包,web工程对应war包。
  6. 安装:在Maven环境下特指将打包jar或者war包结果安装到本地仓库。
  7. 部署:将打包结果部署到远程仓库或将war包部署到服务器运行。

1.4、项目的构建方式

Ant:

Ant是一个项目构建工具,没有集成依赖管理。在构建项目时没有进行目录结构约定,需要手动指定源文件、类文件等目录地址。同时它执行task时需要显示指定依赖task,存在大量代码重复。

Maven:

Maven不仅是一个项目构建工具,更是一个项目管理工具,它在构建项目工程时,比Maven更全面、更灵活。Maven在进行项目构建时,对目录结构进行了约定。同时它拥有生命周期概念,而且是有顺序的,它在执行后面的生命周期时,不需要显示配置前面生命周期。例如:mvn install会自动执行前面的编译、测试、打包等构建过程。

Gradle:

开源的自动化构建系统,建立在Apache Ant和Maven Apache概念的基础上,并引入了基于Groovy的特定领域语言(DSL),而不是Maven的XML形式。

三、Maven依赖管理功能

3.1、什么是依赖管理

一个java项目可以需要使用一些第三方jar包才能运行,我们可以说这个java项目依赖于第三方的jar包。例如:数据源的jar包、数据库连接的jar包等。

依赖管理就是对项目所有需要的jar包进行规范化管理。

3.2、传统的依赖管理

jar包管理完全依靠人工,从网上下载jar包添加到项目中。
这样存在一些问题:

  • 没有对jar包的版本进行统一管理,容易造成版本冲突。
  • 从网上找jar包很不方便,有些jar还不容易找到。
  • jar包添加到工程中导致工程过大。

3.3、Maven项目的依赖管理

Maven项目管理的jar包不需要手动下载jar包添加到工程中,只需要在pom.xml(Maven工程的配置文件)中添加jar包的坐标,会自动从Maven仓库中下载jar包到项目中。
使用Maven管理jar的好处:

  • 通过pom.xml对项目进行统一的版本管理,避免版本冲突。
  • Maven团队维护了一个非常全的Maven仓库,里面包括当前使用的jar包。Maven项目会自动从仓库中下载,很方便。

四、为什么使用Maven

  1. 一步构建:项目构建的过程标准化,通过一个命令即可完成项目构建过程。
  2. 依赖管理:不需要手动导入jar包,通过在pom.xml中定义坐标,自动在Maven仓库中下载,方便且不易出错。
  3. 跨平台:支持windows和linux。
  4. Maven遵循规范开发,有利于大型团队开发效率,降低项目的维护成本。