Maven概述
Maven的作用
- maven对项目的第三方构件 ( jar包)进行统一管理。向工程中加入jar包不要手工从其它地方拷贝,通过maven定义jar包的坐标,自动从maven仓库中去下载到工程中。
- maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。
- maven对工程分模块构建,提高开发效率。
Maven的概念模型
- 项目对象模型(Project object Model)。POM对象模型,每个maven工程中都有一个
pom.xml
文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。 - 依赖管理系统(基础核心)。maven通过坐标对项目工程所依赖的jar包统一规范管理。
- maven定义一套项目生命周期。清理、初始化、编译、测试、报告、打包、部署、站点生成。
- 一组标准集合。maven工程有自己标准的工程目录结构、定义坐标有标准。
- maven管理项目生命周期过程都是基于插件完成的,例如∶开发中使用的tomcat插件。
Maven的仓库介绍
仓库名称 | 作用 |
---|---|
本地仓库 | 相当于缓存,工程第一次会从远程仓库(互联网)去下载jar包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。 |
中央仓库 | 就是远程仓库,仓库中jar由专业团队(maven团队)统一维护。中央仓库的地 址:http://repo1.maven.org/maven2/ |
远程仓库 | 在公司内部架设一台私服,其它公司架设一台仓库,对外公开。 |
Maven下载与安装
官网下载地址:https://maven.apache.org/download.cgi#
下载:apache-maven-3.8.2-bin.zip 包
安装:
- 解压文件夹并把它放到你的想要放置的文件目录下
- 配置环境变量
本地仓库
在apache-maven-3.8.2 文件夹
的 conf 文件夹
下的 settings.xml 文件
里有注释的<localRepository>
标签后面加上
<localRepository>D:\apache-maven-3.8.2-bin\apache-maven-3.8.2\repository</localRepository>
注意:
- repository文件夹 是我自己加的(文件夹名字随意),这个配置本地仓库的路径
- 路径建议不要中文和特殊符号(可能会导致不明的错误)
在 IntelliJ IDEA 2021.2.1 配置Maven
在 IntelliJ IDEA 用 Maven 创建Web项目
-
建立新项目
-
选择
maven
中的webapp
项目
-
创建项目名称基础信息
GroupId
:一般是公司名称,或者所有者的名称ArtifactId
:一般是什么项目,一般和项目名称一样Version
:版本号
-
选择 Maven 基础信息
-
长时间的拉取项目资源(要等待)
-
拉取完成先修改 web.xml 文件(原文件的Servlet是定义为2.5版本的不支持注解方式配置)
改为<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> </web-app>
-
增加必要的文件夹
- 在main文件夹下增加
java
文件夹(放置原码)和resources
文件夹(放置资源) - 在src文件夹下增加test文件夹,test文件夹在增加
java
文件夹(放置测试原码)和resources
文件夹(放置测试资源)
- 在main文件夹下增加
-
把main文件夹下的
java
和resources
文件夹标记为主要目录java
标记为Sources Root
resources
标记为Resources Root
-
把test文件夹下的
java
和resources
文件夹标记为主要测试目录java
标记为Test Sources Root
resources
标记为Test Resources Root
-
安装tomcat
-
pom.xml 安装servlet 依赖
pom.xml
安装依赖
- 去maven坐标库(https://mvnrepository.com/)中
- 搜索你需要的依赖
贴到
<dependencies>
<!-- 贴到这里 -->
<!--
编写Maven的依赖包,坐标, Servlet包
(这里没有提示不要紧,直接写,刷新Maven就会帮你下载)
-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
依赖范围
在<dependency>
标签里的 <scope>
是依赖范围标签
如 测试依赖(junit
)的 <scope>
标签里面是test
,servlet 的 <scope>
标签里面是provided
依赖范围 | 对于编译 classpath 有效 | 对于测试 classpath 有效 | 对于运行 classpath 有效 | 例子 |
---|---|---|---|---|
compile | Y | Y | Y | spring-core |
test | - | Y | - | Junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | JDBC驱动 |
system | Y | Y | - | 本地的,Maven仓库之外的类库 |
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--
编写Maven的依赖包,坐标, Servlet包
(这里没有提示不要紧,直接写,刷新Maven就会帮你下载)
-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>