Maven学习-什么是Maven

Posted 小拙笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven学习-什么是Maven相关的知识,希望对你有一定的参考价值。

参考来源:

https://www.cnblogs.com/best/p/9676515.html#_lab2_1_2

https://www.yiibai.com/maven/maven_repositories.html

 

一、什么是Maven?                                                                                                                                                                  
Maven是当前最受欢迎的Java项目管理和构建自动化综合工具。

Maven能帮开发人员自动化构建项目,还能抽象构建过程,提供构建任务的定制实现。

Maven虽然是通过Java语言实现的,但是其支持管理和构建Java、C#、Ruby、Scala类型项目。

业界常见的项目管理和构建工具还有:Gradle、Gand、以及以前Java的Ant、node.js中的npm、dotNet中的nuget、php中的Composer等。

 

Maven主要做了两件事:

1)统一开发规范与工具

2)统一管理jar依赖

 

如果没有Maven,你可能不得不经历下面的过程:

1)如果使用了spring,去spring的官网下载jar包;如果使用hibernate,去hibernate的官网下载Jar包;如果使用Log4j,去log4j的官网下载jar包

2)当某些jar包有依赖的时候,还要去下载对应的依赖jar包

3)当jar包依赖有冲突时,不得不一个个排查

4)执行构建时,需要使用ant写出很多重复的任务代码

5)当新人加入开发时,需要拷贝大量的jar包,然后重复进行构建

6)当进行测试时,需要一个个的运行、检查

有了Maven,它提供了三种功能:

1)依赖的管理:仅仅通过jar包的几个属性,就能确定唯一的jar包,在指定的pom.xml文件中主要写入这些jar包依赖属性,就会自动下载并管理jar包。

2)项目的构建:内置很多的插件与生命周期,支持多种任务,比如校验、编译、测试、打包、部署、发布...

3)项目的知识管理:管理项目相关的其他内容,比如开发者信息,版本等

 

Maven是Apache下的一个开源项目,Maven主要目标是提供给开发人员:

1)项目是可重复使用,易维护,更容易理解的一个综合模型。

2)插件或交互的工具,这种声明性的模式。

 

二、Maven统一的开发规范与工具                                                                                                                          

Maven通过统一的标准目录结构统一的项目配置统一的构建过程生命周期管理,来实现项目的标准化管理。

1、统一的标准目录:
Maven提倡项目采用一种共同的标准目录结构:

  

2、统一项目配置管理
Maven项目的根目录pom.xml文件,这个pom.xml文件Maven项目的统一配置管理文件。

Maven通过POM(Project Object Model)文件来进项项目管理,内含了项目配置信息、项目依赖信息。POM是Maven工作的基本单元,执行构建任务时,Maven会从当前目录下查找pom.xml,根据POM文件配置进行构建。

(补充POM文件样例截图)

 

关于POM文件更详细的说明,见后续章节。

 

3、统一的构建过程生命周期管理

Maven对构建过程,划分为细化为标准的生命周期和阶段,通过这个生命周期和阶段来标准化管理构建动作。

Maven定义3个生命周期、多个阶段:

 生命周期每个阶段动作标准化,开发过程中通过生命周期、阶段组合实现需要的构建步骤。生命周期每个阶段具体的动作由插件(Plugins)实现。

 

更详细信息,见后续Maven生命周期章节。

 

三、统一管理jar包依赖                                                                                                                                             

java项目中依赖关系存在嵌套的:

Maven项目的pom.xml文件中定义本项目直接依赖的jar包(通过GroupId: 组织号、ArtifactId:项目名、Version:版本定义)。

Maven执行构建阶段根据pom.xml文件的 依赖定义 自动从远端下载直接依赖的jar包,并解析直接依赖的jar包对其他包的依赖、并嵌套的下载其依赖  到本地。在项目构建过程中引用本地的jar包,并且本地jar包目录可同时共享给 本机上的所有项目。

这样,就不需要开发人员子在构建项目前,人工的分析项目嵌套依赖关系、逐个 手工 从远端逐个下载jar包,并在每个项目目录下维护一个lib目录。

 

更详细信息,见后续Maven依赖管理章节。

四、Maven的概念模型                                                                                                                                        

以上是关于Maven学习-什么是Maven的主要内容,如果未能解决你的问题,请参考以下文章

Maven初级入门学习

Maven安装配置以及maven项目创建

Git+Jenkins学习之路之发布maven项目及按版本发布

Mavenmaven简介

Mavenmaven简介

Maven实战之初识MavenMaven的简单介绍