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

news2024/12/28 4:43:46

 

目录

一、Maven介绍

1. Maven是什么?

2.Maven的作用?

二、Maven仓库介绍

2.1 库的分类

三、Maven安装与配置

3.1 Maven安装

3.2 Maven环境配置

3.3 仓库配置

四、Eclipse与Maven配置

五、Maven项目测试

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

5.2 解析Maven项目的目录结构

5.3 Maven 依赖配置

5.4 测试pom.xml是否能通过编译

5.5 项目JDK与WEB版本修改

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目录的路径

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);
	}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/860571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单调递增的数字——力扣738

文章目录 题目描述解法题目描述 解法 #include<iostream> #include<string>using namespace std;int monotoneIncreasingDigits

WhatsApp 实时聊天小插件:快速触达客户的秘密

当您进入商店时&#xff0c;您希望销售人员会向您打招呼&#xff0c;或者至少在您需要时可以找到人提供帮助。对于电子商务商店&#xff0c;客户的期望不会降低。但谁应该担任 24-7的商店经理&#xff1f;实时聊天可以成为您的电子商务商店经理。 什么是 WhatsApp 实时聊天小插…

python中字符串的内建函数之expandtabs的用法

一、str.expandtabs() 进入这个函数之前&#xff0c;我们来看看: str_1 abc\tdef print(str_1) # abc defstr_2 \t print(len(str_2)) # 1根据打印结果来看&#xff0c;abc距离def一个字符的间距。在字符串中\t的长度为1&#xff08;tab键也就是\t&#xff0c;通常说的是…

07-1_Qt 5.9 C++开发指南_文件系统及文件读写_文本文件读写(使用 QTextStream 进行文件读写更为方便)

文章目录 1. 实例功能概述2. QFile 读写文本文件3. QFile 和QTextStream 结合读写文本文件4. 解决中文乱码的问题5. 框架及源码5.1 可视化UI设计5.2 mainwindow.h5.3 mainwindow.cpp5.4 main.cpp 1. 实例功能概述 文本文件是指以纯文本格式存储的文件&#xff0c;例如用 Qt Cr…

个人网站使用又拍云实现CDN加速

前言&#xff1a;前几篇文章完成了将个人博客部署到阿里云服务器上并实现了https加密访问&#xff0c;但是由于图片以及js文件较大&#xff0c;访问速度较慢并且不太稳定&#xff0c;就想着使用CDN加速一下网站访问速度&#xff0c;于是就有了这篇文章。 前置条件&#xff1a; …

类和对象的学习

类和对象说明 类的属性和方法 类的入门案例 //类名 public class school {//属性String name; //名称int jsNumber; //教室数目int jfNumber;//机房数目//方法public void show(){System.out.println("名称: " name "教室数目" jsNumber " , 机房数…

双端列表 —— Deque 接口概述,使用ArrayDeque实现队列和双端队列数据结构

Deque接口简介 Deque译为双端队列&#xff0c;在双向都能作为队列来使用&#xff0c;同时可用作栈。Deque接口的方法是对称成比例的。 Deque接口继承Queue接口&#xff0c;因此具有Queue&#xff0c;Collection&#xff0c;Iterable的方法属性。 双端队列的工作原理 在常规队…

什么是 Redis ? Redis缓存应用场景有哪些?

面试官问题 redis击穿、穿透有什么区别&#xff1f; 如何设计用例及测试 Redis 的基本概念 在没有添加 Redis 的时候&#xff0c;后端的查询流程是&#xff1a; 用户访问页面。 请求后端服务。 经过逻辑处理后&#xff0c;去数据库查询信息。 在添加 Redis 的之后&#xf…

CTF之Web安全SSI注入

前言 如何从外部进入主机&#xff1f; SSI注入攻击介绍 SSI(server side inject)的出现是为了赋予HTML静态页面动态的效果&#xff0c;通过SSI来执行系统命令&#xff1b;并返回对应的结果。 如果再网站目录中发现了.stm&#xff1b;.shtm&#xff1b;.shtml&#xff1b;这…

五粮液快闪酒吧亮相大运会,在传承中彰显创新精神

摇风、糖塑、弄窑、趣闻、琉璃、沉香、绣彩、刻花......一座以“中国风&#xff0c;巴蜀韵”为主题的快闪酒吧&#xff0c;是五粮液献给中外来宾的“和美之礼”&#xff0c;一项项身临其境的传统文化体验让全球友人仿佛“梦回大唐盛世&#xff0c;再现繁华风尚”。 &#xff0…

harbor仓库安装部署(1.6.1)

目录 1、关闭防火墙 2、安装docker-ce&#xff08;所有主机&#xff09; 3、配置阿里云镜像加速器 4、部署Docker Compose 服务 5、部署 Harbor 服务 6、下载 Harbor 安装程序&#xff08;两台harbor主机&#xff09; 7、配置 Harbor 参数文件 8、启动并安装 Harbor …

【CSS3】CSS3 动画 ⑤ ( 动画速度曲线 | 设置动画步长 | 动画匀速执行 | 动画分 2 步执行 | 使用动画步长实现打字机效果 )

文章目录 一、动画速度曲线设置二、代码示例 - 动画速度曲线设置1、代码示例 - 动画匀速执行2、代码示例 - 动画分 2 步执行 三、代码示例 - 使用动画步长实现打字机效果 一、动画速度曲线设置 CSS3 样式中 , 设置 动画速度曲线 的属性是 animation-timing-function 属性 ; an…

Kubernetes集群yum安装部署

第四阶段 时 间&#xff1a;2023年8月10日 参加人&#xff1a;全班人员 内 容&#xff1a; Kubernetes集群yum安装部署 目录 yum方式部署K8S集群 一、环境搭建 1、准备环境 2、关闭防火墙 3、修改master主机的计算机名设置host文件 二、安装部署 &#xff08;一&…

OpenCV实验箱---机械臂自由抓取例程开发使用手册

目录 一、项目介绍 项目背景&#xff1a; 相机型号&#xff1a; 二、机械臂自由抓取演示 使用注意事项&#xff1a; 操作步骤&#xff1a; 三、核心代码讲解 ① 机械臂相关运动驱动代码 ② BGR图像转换伪彩色深度图像代码 ③ 目标跟随及抓取动作代码 开发者&#xff1a;…

CLIP论文精度

CLIP论文精度 Zero-shot CLIP多模态模型 Image Endecoder是一个图片编码器&#xff0c;既可以是ResNet,也可以是Vision Transformer. Text Encoder和Image Encoder产生的两组特征进行对比学习&#xff08;无监督训练&#xff09; 分类头&#xff1f;“分类头” 是指网络结…

第02天 什么是JWT ?

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 每天一个知识点 ✨特色专栏&#xff1…

MChat-Gpt V1.0.0 (将ChatGpt机器人接入内网供全体使用)

Github>https://github.com/MartinxMax/MChat-Gpt 首页 MChat-Gpt V1.0.0将ChatGpt机器人接入内网供全体使用 你需要一个ChatGpt账户如果您在中国则需要使用代理访问,设置TUN代理模式 安装依赖 选择你的系统进行安装 服务端配置 #python3 ChatGpt_Server.py -h 使用&a…

cve-2021-2394 weblogic反序列化漏洞分析

前几天weblogic 7月例行更新中&#xff0c;修复了一个Rce漏洞。该漏洞性质属于绕过之前的反序列化漏洞补丁。要了解这个漏洞的原因&#xff0c;我们首先要学习其他几个漏洞的原理。 一 weblogic 反序列化绕过指南 本章节只是大概讲解一下如何绕过weblogic反序列化漏洞的补丁。…

【金融量化】Python实现根据收益率计算累计收益率并可视化

1 理论 理财产品&#xff08;本金100元&#xff09; 第1天&#xff1a;3% &#xff1a;&#xff08;13%&#xff09; ✖ 100 103 第2天&#xff1a;2% &#xff1a;&#xff08;12%&#xff09;✖ 以上 103 2.06 第3天&#xff1a;5% : &#xff08;15%&#xff09;✖ 以上…

【指针模拟实现库函数strlen】

指针模拟实现库函数strlen 1.库函数strlen含义 strlen是用来计算字符串长度的。&#xff08;不包含’\0’) 2.assert断言介绍 assert.h 头⽂件定义了宏 assert() &#xff0c;⽤于在运⾏时确保程序符合指定条件&#xff0c;如果不符合&#xff0c;就报 错终⽌运⾏。这个宏常常…