文章目录
有什么用?
在javaweb开发中,我们需要使用各种 jar 包,每用到一种 jar 包,都需要我们手动去导入。
如何能够让一个东西自动帮我们导入和配置这些jar包。
Maven 是一个项目架构管理工具,可以对 Java 项目进行构建、依赖管理,用来方便导入jar包。
maven工程不直接将jar包导入到工程,而是通过pom.xml文件添加依赖,这样避免jar包直接引入进来,而是在需要jar包的时候,通过pom.xml中的坐标到一个专门存放jar包仓库去找,再把这些jar包拿来运行。
Maven的核心思想:约定大于配置
- 有约束,不要去违反。
Maven会规定好你该如何去编写我们的java代码,必须要按照这个规范来。
下载安装Maven
网盘链接:https://pan.baidu.com/s/1nPZn4lj87mM7AC8vzHM_RQ?pwd=1234
提取码:1234
里面还有一些jar包。
官网:https://maven.apache.org/
下载完成后,解压即可,路径不要有中文、空格、特殊符号。
- bin目录就是他的执行文件
- boot启动需要的一些选项,一些jar包
- lib存放第三方的资源,一些jar包
- conf就是他的一些配置,里面有个settings.xml文件
<proxies> </proxies>配置了一些连接的端口信息
<mirrors> </mirrors>配置镜像
配置环境变量
高级系统设置–>环境变量
MAVEN_HOME
,变量值是maven的安装位置D:\ProgramFiles\maven\apache-maven-3.6.0M2_HOME
,变量值就是maven的bin目录- 在系统中的
Path
中配置%MAVEN_HOME%\bin
确定 --> 按Win+R键,输入cmd --> mvn -v
这就代表环境配完了。
阿里云镜像
- 镜像:mirrors
- 作用:加速我们的下载
- 国内建议使用阿里云镜像,可以百度搜一下maven 阿里云镜像
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>*,!jeecg,!jeecg.-snapshots</mirrorOf>
</mirror>
本地仓库
建立一个本地仓库localRepository,maven本地仓库也可以不配置,如果不配置,默认本地仓库地址为C:\用户\Administrator.m2\repository
我的是
<localRepository>D:/ProgramFiles/maven/repository</localRepository>
可以看到仓库里面有一个个的包。
远程仓库
也就是说我本地仓库没有,就会去远程仓库去下载,可以理解为互联网仓库
。
中央仓库
maven软件内置的一个远程仓库,用于服务我们整个互联网的,他是由maven团队来进行维护的,主要包含了我们世界上面大部分比较主流的一些开源的框架一些jar包。互联网仓库没有就去中央仓库找
。
在IDE中使用Maven
- 启动IDE
- 创建一个Maven Web项目
File -> New -> Project…
勾不勾选Create from archetype都可以,勾选可以使用Maven的模板,选择org.apache.maven.archetypes:maven-archetype-webapp,可以看到底下的提示"A simple Java web application"一个简单的Java应用。
然后我们就发现,IDE能自动识别的原因是因为我设置了环境变量,否则是识别不了的。IDE也有自带的Maven,但是能配置的非常少。
到这里我们Maven项目就创建出来了。
右下角出现弹窗,Maven projects need to be imported意思是是否自动导入?选Enable Auto-Import 启动动导入,这样以后就不会老是弹出这个弹窗
目录结构
- web.xml是web工程的主配置文件
- index.jsp是首页
现在的目录结构并不是很完整,需要自己手动补齐
java目录是用来存放源文件的
假如这个java图标是灰色的,我们需要把他变成
源码文件夹,右键–>mark directory–>sources rootresources目录是用来存放配置文件 ,新建resources–>邮件–>mark directory–>resources root
可以运行一下Test试试
在pom.xml文件中添加坐标
从中央仓库获取Jar: https://mvnrepository.com/
进入网站,输入关键字进行搜索(例如我搜索:servlet),点击想要的版本
pom.xml文件
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
没有爆红就是写对了,如果爆红了,说明Maven配置的有问题,你需要重新配置。
com.qibu.servlet下新建一个MyServlet类
package com.qibu.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/myServlet")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("myServlet...");
}
}
部署项目
完成之后点击Apply --> OK
点击启动,如果报错javax.servlet包不存在可以看后面,浏览器输入http://localhost:8081/javaweb_maven_war/myServlet,后台打印myServlet…
至此完结撒花✿✿ヽ(°▽°)ノ✿
idea导入maven依赖出现xxx.jar包找不到
这个我也是搞了好久才知道,我用的是IntelliJ IDEA 2020.1
,这个可能是这个版本IDEA的bug,设置的maven,它的依赖仓库repository只能为默认的位置,即:设置Maven里的Local repository
路径必须是C:\Users\???\.m2\repository
这个默认的位置,不然就会报错找不到包。这个版本idea不会到外部的路径仓库下找包,就算你设置外部仓库也不行。
设置Maven跟本地Maven进行关联
File -> settings…
注意:Local repository 本地仓库的路径,IDEA 2020.1版本的一定要是默认的路径C:\Users\???\.m2\repository
点击重新导入所有Maven项目按钮,运行,这时候就可以看到项目可以运行了。