一、Maven介绍
1. Maven是什么?
Maven是一个用于构建和管理Java项目的开源工具。它提供了一种标准化的项目结构、构建过程和依赖管理机制,使得开发人员能够更轻松地构建、测试和部署Java应用程序。
2.Maven的作用?
传统工程我们直按把jar包放置在项目中,在真的项目开发中我们需要用到许多jar包,我们还需要把jar下载到本地然后放置在项目里,显然这样是很不方便的。而Maven工程把jar包放置在仓库中,项目中只用放置jar包的坐标(路径)。而用了 Maven 之后,需要什么包,直接在 pom.xml 中添加几行 xml 代码(添加所依赖jar包的坐标),指定包名、版本等,Maven就会自动从仓库里下载jar包。
pom.xml 解释:
Maven使用POM(项目对象模型)文件来描述项目的结构、依赖关系和构建配置。POM是一个XML文件,其中包含了项目的元数据、构建配置、依赖项和插件等信息。
二、Maven仓库介绍
Maven库是指存储和管理Java项目依赖的仓库。它是Maven构建工具的核心组成部分,用于管理项目的依赖关系和版本控制。
2.1 库的分类
Maven库分为两种类型:本地库和远程库。
- 本地库:本地库是存储在本地计算机上的Maven仓库。当你第一次构建一个项目时,Maven会自动下载所需的依赖并将其保存在本地库中。之后,当你构建其他项目时,Maven会检查本地库中是否已经存在所需的依赖,如果存在则直接使用,避免重复下载。
- 远程库:远程库是存储在远程服务器上的Maven仓库。远程库又分为三种:
- 中央仓库:架设在Internet上,它是一个公共的、全球性的仓库,包含了大量的开源Java项目的依赖。
- 私服:一般用于公司,架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。
- 中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快响应用户请求。
使用Maven库的好处包括:
- 管理依赖:Maven库提供了一个集中管理项目依赖的方式,简化了项目配置和构建过程。
- 版本控制:Maven库可以确保项目使用的依赖版本一致,避免了版本冲突和兼容性问题。
- 自动下载:Maven库可以自动下载项目所需的依赖,减少了手动下载和配置的工作量。
- 缓存机制:Maven库会缓存已下载的依赖,提高了构建的速度和效率。
总之,Maven库是一个重要的工具,可以帮助开发人员更方便地管理和使用项目的依赖,提高开发效率和代码质量。
三、Maven安装与配置
3.1 Maven安装
👉 点击进入 Maven官网下载Maven安装包
下载后得到的压缩包:
3.2 Maven环境配置
1. 解压Maven压缩包 --> 赋值有bin目录的路径
2. 进入电脑设置里的高级系统设置 --> 点击环境变量
3. 新建一个系统变量 将Maven路径粘贴上去
4. 配置环境变量 path
5. 打开cmd输入 mvc -version 进行测试如图下就是配置成功了
3.3 仓库配置
1. 配置本地仓库,新建一个文件作为仓库并复制其路径
2. 打开Maven文件下的conf文件夹下的settings.xm文件,找到localrepository(复制一个新的)将之前建的仓库路径放进去
3. 如果考虑到性能的话可以修改它的镜像换成阿里云镜像
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
四、Eclipse与Maven配置
1. 进入Eclipse进入Preferences --> maven --> installation --> add
确定后要选择 Apache-maven-3.5.0
2. 设置当前电脑配置Maven 点击User settings: Browse... 更换之前配置的conf下的settings.xml文件
最后就配置完成了,将来你要下载的jar包就会保存到之前创建配置好的文件夹里了(mvn_repository)
五、Maven项目测试
5.1 新建Maven项目步骤及注意事项
1. 在Eclipse里面新建一个Maven项目 Catalog选择Internal本地 --> 下面选择最后一个webapp
2. Group Id: 设置自己的用户id; Artifact Id:编写项目名称
3. 刚新建的Maven项目要下载各种工具,请耐心等待它下载完...
注意: 期间不要退出或关闭网络可能会下载失败,需要把本地仓库清空,重新配置下载。
5.2 解析Maven项目的目录结构
新建的Maven文件的目录结构不全需要点击项目 --> Build Path --> Source 取消Allow的选项就可以展示项目完整目录结构了
5.3 Maven 依赖配置
1. 去中央库里找到 JSP API 资源
2. 点击进入2.0版本,复制 Maven JSP 依赖内容
3. 将所需要的依赖配置到 pom.xml 文件中,在其中你可修改依赖的版本保存就可以直接下载,下载好后就可以再本地仓库查看jar包了。是不是很方便😂
4. 修改web.xml配置,项目里面是2.多版本的我用的是3.1因此需要修改它的头部版本信息
<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_3_1.xsd"
version="3.1">
5.4 测试pom.xml是否能通过编译
在pom.xml界面运行Maven test
如果出现这个就是配置成功了,如果不是你就将本地仓库的文件和配置全删了重配,要么你知道是配置的哪个才出了问题,删了出问题的那个依赖就行了.
5.5 项目JDK与WEB版本修改
1. 右击项目 --> Preferences -->Project Facets 先把web和java选项取消再修改版本,修改后点击Apply在选择Dynamic Web 和 Java 。
2. 修改原来web项目的路径点击 Further configuration available 并勾选Generate点击ok后在Apply应用后保存并关闭
3. 完成以上步骤之后可能还是报错就要在pom.xml添加一个插件
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
4. 最后右击项目 Maven --> Update Project 修改项目就ok啦!
5.6 项目测试
这里编写了一个简单的sevlet跳转到index.jsp页面进行测试
package com.ycxw.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/HelloMavenServlet") public class HelloMavenServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("hello,maven"); request.getRequestDispatcher("/index.jsp").forward(request, response); } }