Maven学习(1)-什么是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的概念模型