文章目录
一、认识 Maven
1、Maven 最重要的功能
Apache Maven 是一个强大的项目管理工具,可以用于项目构建、依赖管理、项目信息管理。
Maven 更多的被用作项目构建工具,它使项目的构建过程简单化、标准化、可复用,极大的方便了整个项目的开发和管理。
它基于工程对象模型(POM)的概念,使用 pom.xml
进行核心功能配置,进而管理项目的构建、报告和文档等。
2、什么是构建工具?
构建工具是将软件项目构建相关的过程自动化的工具。
构建一个软件项目通常包含以下一个或多个过程:
- 生成源码(如果项目使用自动生成源码);
- 从源码生成项目文档;
- 编译源码;
- 将编译后的代码打包成JAR文件或者ZIP文件;
- 将打包好的代码安装到服务器、仓库或者其它的地方;
当然,有些项目可能需要更多的过程才能完成构建,同样也可以实现自动化。
自动化构建过程的好处:
-
将手动构建过程中犯错的风险降到最低。
-
自动构建工具通常要比手动执行同样的构建过程要快。
二、Maven 关键特性
1、简化并标准化项目构建过程
- Maven 为开发者提供了一套完整的构建生命周期框架,开发人员只需要按照框架操作。
- Maven 使用一个标准的目录结构和一个默认的构建生命周期,开发人员只需要把代码放入相应的目录中并使用默认配置。
2、自动管理依赖
2.1 以前项目开发中的问题
jar 包依赖和冲突问题:
在构建一个大型项目时,经常需要用到很多第三方的类库,需要引入大量的jar包,需要一个个去查找。
一个大型项目中 jar 包的数量之多往往让我们瞠目结舌,并且jar包之间的关系错综复杂,多个jar包之间又可能会引起冲突问题,都可能导致项目编译失败。
以往开发项目时,程序员往往需要花较多的精力在引用jar包搭建项目环境上,而这一项工作尤为艰难,少一个Jar包、多一个jar包往往会报一些让人摸不着头脑的异常。
2.2 Maven 如何解决依赖问题?
我们只需要告诉Maven需要哪些 jar 包,它会帮助我们自动下载、并统一管理,极大提升开发效率。
- 自动下载依赖
jar
包- 通过在
pom.xml
文件中的<dependency>
节点添加相应配置,就会自动下载相应jar包。
- 通过在
<dependency>
<groupId>junit</groupId> 项目名
<artifactId>junit</artifactId> 项目模块
<version>4.1.1</version> 项目版本
<scope>test</scope> 作用范围
</dependency>
-
自动管理依赖
- 每一个jar包也有自己的 pom.xml文件,里面也会有
<dependency>
配置,在这里配置的是这个jar包所依赖的其他jar包,也会被maven自动下载下来
- 每一个jar包也有自己的 pom.xml文件,里面也会有
-
统一管理
jar
包- 通过仓库来实现统一管理,后面会详细讲解Maven仓库的概念。
3、约定优于配置
Maven 使用约定而不是配置。
也就是说开发者不需要关心每一个配置细节,Maven 会为工程提供合理的默认行为。
当创建 Maven 工程时,Maven 会创建默认的工程结构。开发者只需要合理的放置文件,不再需要定义任何配置。
下表是工程源码文件、资源文件的默认配置,和其他一些配置:
(假定 ${basedir} 表示工程目录)
配置项 | 默认值 |
---|---|
source code | ${basedir}/src/main/java |
resources | ${basedir}/src/main/resources |
Tests | ${basedir}/src/test |
Complied byte code | ${basedir}/target |
distributable JAR | ${basedir}/target/classes |
4、热部署,热编译
在web项目已经运行的时候,修改代码能直接被web服务器所接受,不需要重启服务器或者重新部署代码,而且可以直接通过maven 打包war或者jar项目。