# Java代审：Maven基础知识

**URL:** <https://forum.90sec.com/t/topic/1963>\
**Category:** 技术文章\
**Created:** [2021 年12 月 23 日 06:49 UTC](https://forum.90sec.com/t/topic/1963 "2021-12-23T06:49:32Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![zxs](https://forum.90sec.com/user_avatar/forum.90sec.com/zxs/32/7986_2.png) [@zxs](https://forum.90sec.com/u/zxs)\
发布日期： [2021 年12 月 23 日 06:49 UTC](https://forum.90sec.com/t/topic/1963/1 "2021-12-23T06:49:32Z")

</div>

**前言**

- Maven 是一个项目构建和管理工具，利用它可以对 JAVA 项目进行构建和依赖管理。

- Maven 采用项目对象模型 POM（Project Object Model）来管理项目。

- Maven 的主要工作就是用来解析一些 XML 文档、管理生命周期与插件。

- Maven 被设计成将主要的职责委派给一组 Maven 插件，这些插件可以影响 Maven 生命周期，提供对目标的访问。

**0x01 Maven环境配置**

1. JDK安装以及系统要求

Maven 是一个基于 Java 的工具，所以要做的第一件事情就是安装 JDK（自行百度）。

系统要求

 ![3218350680](https://forum.90sec.com/uploads/default/original/2X/e/eb40e51092c56424e75abc3cff066ff214484ef3.png)
1. Maven安装及环境变量配置

Mevan下载：[Maven – Download Apache Maven](http://maven.apache.org/download.cgi)

![109852488](https://forum.90sec.com/uploads/default/original/2X/5/54c4b701f715364f78a914bc98eaa961288ff15b.png)

对应平台下载Maven包及解压路径

 ![3401134763](https://forum.90sec.com/uploads/default/original/2X/c/c6262354a8c6bad7ac955d441debd534f4c752ee.png)

**设置 Maven 环境变量**

**Windows**  
新建系统变量 MAVEN\_HOME，变量值：E:Mavenapache-maven-3.3.9

![98515906](https://forum.90sec.com/uploads/default/original/2X/1/1b7ce05678de05dcd3c01f6d3762a865a8891e9b.png)

编辑系统变量Path，添加变量值：;%MAVEN\_HOME%bin

![873050239](https://forum.90sec.com/uploads/default/original/2X/8/832bfa73c44f5e9a88f603588643c1c151282723.png)

**Linux**  
下载解压：

```
# wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz# tar -xvf apache-maven-3.3.9-bin.tar.gz# sudo mv -f apache-maven-3.3.9 /usr/local/

```

编辑 /etc/profile 文件 sudo vim /etc/profile，在文件末尾添加如下代码：

```
export MAVEN_HOME=/usr/local/apache-maven-3.3.9export PATH=${PATH}:${MAVEN_HOME}/bin

```

保存文件，并运行如下命令使环境变量生效：  
在控制台输入如下命令，如果能看到 Maven 相关版本信息，则说明 Maven 已经安装成功：

```
# source /etc/profile# mvn -v

```

**Mac**  
下载解压：

```
$ curl -O http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz$ tar -xvf apache-maven-3.3.9-bin.tar.gz$ sudo mv -f apache-maven-3.3.9 /usr/local/

```

编辑 /etc/profile 文件 sudo vim /etc/profile，在文件末尾添加如下代码：

```
export MAVEN_HOME=/usr/local/apache-maven-3.3.9export PATH=${PATH}:${MAVEN_HOME}/bin

```

保存文件，并运行如下命令使环境变量生效：

```
$ source /etc/profile

```

在控制台输入如下命令，如果能看到 Maven 相关版本信息，则说明 Maven 已经安装成功：

```
$ mvn -vApache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)Maven home: /usr/local/apache-maven-3.3.9Java version: 1.8.0_31, vendor: Oracle CorporationJava home: /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jreDefault locale: zh_CN, platform encoding: ISO8859-1OS name: "mac os x", version: "10.13.4", arch: "x86_64", family: "mac"

```

**0x02 Maven引入外部依赖**

**项目结构**

 ![2029286370](https://forum.90sec.com/uploads/default/original/2X/0/0a4706974753350d1f321919b5bb4c1084f75058.png)

如果我们的项目需要引入外部依赖时，可以在pom.xml文件中添加依赖

```
eg:sevlet的依赖 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency>

```

完整的pom.xml文件

```xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>javaweb-03-jsp</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>servlet-01</module> </modules> <dependencies> <!-- https://mvnrepository.com/artifact/taglibs/standard --> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl --> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies></project>

```

在项目中使用到的依赖包在生成war时会在WEB-INF文件夹下的lib文件导入使用

 ![2353289019](https://forum.90sec.com/uploads/default/original/2X/4/4af6cfda98a0a18b2674bea4dccd350a18147efc.png)

**依赖库：** **[https://mvnrepository.com/](https://mvnrepository.com/)**
