Apache Maven:从构建到部署,一站式解决方案

目录

一、Maven介绍

[1. Maven是什么?](#1. Maven是什么?)

2.Maven的作用?

二、Maven仓库介绍

[2.1 库的分类](#2.1 库的分类)

三、Maven安装与配置

[3.1 Maven安装](#3.1 Maven安装)

[3.2 Maven环境配置](#3.2 Maven环境配置)

[3.3 仓库配置](#3.3 仓库配置)

四、Eclipse与Maven配置

五、Maven项目测试

[5.1 新建Maven项目步骤及注意事项](#5.1 新建Maven项目步骤及注意事项)

[5.2 解析Maven项目的目录结构](#5.2 解析Maven项目的目录结构)

[5.3 Maven 依赖配置](#5.3 Maven 依赖配置)

[5.4 测试pom.xml是否能通过编译](#5.4 测试pom.xml是否能通过编译)

[5.5 项目JDK与WEB版本修改](#5.5 项目JDK与WEB版本修改)

[5.6 项目测试](#5.6 项目测试)


一、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库分为两种类型:本地库和远程库。

  1. 本地库:本地库是存储在本地计算机上的Maven仓库。当你第一次构建一个项目时,Maven会自动下载所需的依赖并将其保存在本地库中。之后,当你构建其他项目时,Maven会检查本地库中是否已经存在所需的依赖,如果存在则直接使用,避免重复下载。

  2. 远程库:远程库是存储在远程服务器上的Maven仓库。远程库又分为三种:

    1. 中央仓库:架设在Internet上,它是一个公共的、全球性的仓库,包含了大量的开源Java项目的依赖。

    2. 私服:一般用于公司,架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。

    3. 中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快响应用户请求。

使用Maven库的好处包括:

  • 管理依赖:Maven库提供了一个集中管理项目依赖的方式,简化了项目配置和构建过程。
  • 版本控制:Maven库可以确保项目使用的依赖版本一致,避免了版本冲突和兼容性问题。
  • 自动下载:Maven库可以自动下载项目所需的依赖,减少了手动下载和配置的工作量。
  • 缓存机制:Maven库会缓存已下载的依赖,提高了构建的速度和效率。

总之,Maven库是一个重要的工具,可以帮助开发人员更方便地管理和使用项目的依赖,提高开发效率和代码质量。

三、Maven安装与配置

3.1 Maven安装

👉 点击进入Maven官网下载Maven安装包

下载后得到的压缩包:

3.2 Maven环境配置

  1. 解压Maven压缩包 --> 赋值有bin目录的路径
  1. 进入电脑设置里的高级系统设置 --> 点击环境变量
  1. 新建一个系统变量 将Maven路径粘贴上去
  1. 配置环境变量 path
  1. 打开cmd输入 mvc -version 进行测试如图下就是配置成功了

3.3 仓库配置

  1. 配置本地仓库,新建一个文件作为仓库并复制其路径
  1. 打开Maven文件下的conf文件夹下的settings.xm文件,找到localrepository(复制一个新的)将之前建的仓库路径放进去
  1. 如果考虑到性能的话可以修改它的镜像换成阿里云镜像

<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

  1. 设置当前电脑配置Maven 点击User settings: Browse... 更换之前配置的conf下的settings.xml文件

最后就配置完成了,将来你要下载的jar包就会保存到之前创建配置好的文件夹里了(mvn_repository)

五、Maven项目测试

5.1 新建Maven项目步骤及注意事项

  1. 在Eclipse里面新建一个Maven项目 Catalog选择Internal本地 --> 下面选择最后一个webapp
  1. Group Id: 设置自己的用户id; Artifact Id:编写项目名称
  1. 刚新建的Maven项目要下载各种工具,请耐心等待它下载完...

**注意:**期间不要退出或关闭网络可能会下载失败,需要把本地仓库清空,重新配置下载。

5.2 解析Maven项目的目录结构

新建的Maven文件的目录结构不全需要点击项目 --> Build Path --> Source 取消Allow的选项就可以展示项目完整目录结构了

5.3 Maven 依赖配置

  1. 去中央库里找到 JSP API 资源
  1. 点击进入2.0版本,复制 Maven JSP 依赖内容
  1. 将所需要的依赖配置到 pom.xml 文件中,在其中你可修改依赖的版本保存就可以直接下载,下载好后就可以再本地仓库查看jar包了。是不是很方便😂
  1. 修改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 。
  1. 修改原来web项目的路径点击 Further configuration available 并勾选Generate点击ok后在Apply应用后保存并关闭
  1. 完成以上步骤之后可能还是报错就要在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>

  1. 最后右击项目 Maven --> Update Project 修改项目就ok啦!

5.6 项目测试

这里编写了一个简单的sevlet跳转到index.jsp页面进行测试

java 复制代码
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);
	}

}
相关推荐
一只爱打拳的程序猿几秒前
【Spring】更加简单的将对象存入Spring中并使用
java·后端·spring
杨荧2 分钟前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
minDuck4 分钟前
ruoyi-vue集成tianai-captcha验证码
java·前端·vue.js
为将者,自当识天晓地。22 分钟前
c++多线程
java·开发语言
daqinzl30 分钟前
java获取机器ip、mac
java·mac·ip
激流丶1 小时前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
Themberfue1 小时前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
时差9531 小时前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
让学习成为一种生活方式1 小时前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
晨曦_子画1 小时前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin