JavaWeb-Maven基础

Maven是专门用于管理和构建Java项目的工具,是 Apache 下的一个纯 Java 开发的开源项目,基于项目对象模型(POM)概念。先来学习一下Maven基础,等后面学完开发框架后再学Maven高级,这次的内容如下
在这里插入图片描述

一、概述

1、简介

Maven是专门用于管理和构建Java项目的工具,主要功能
1)提供了一套标准化的项目结构
在这里插入图片描述

2)提供了一套标准化的构建流程(编译,测试,打包,发布…)
在这里插入图片描述

3)提供了一套依赖管理机制

依赖管理实质:管理项目所依赖的第三方资源(jar包、插件…)

传统方式
1.下载jar包
2.复制jar包到项目
3.将jar包加入工作环境

Maven管理(优点)
1.Maven使用标准的坐标配置来管理各种依赖
2.只需要简单的配置就可以完成依赖管理

在这里插入图片描述

二、Maven安装配置

1、下载Maven安装包并解压

1.1 下载Maven(以下方法二选一)

1)通过官网下载:https://maven.apache.org/download.cgi
在这里插入图片描述

2)为了方便,我这里提供了网盘
链接:https://pan.baidu.com/s/1yZgxWz29vNsx-dg4yZrQWw?pwd=w7xk
提取码:w7xk

1.2 解压并查看目录

下载完成后,找到压缩包,选择要解压的盘符(如我的是D盘),右键选择解压到当前文件夹即可。

注:最好解压到一个不含中文和空格的路径下

打开文件夹,目录结构及相关说明如下
在这里插入图片描述

2、配置Maven环境变量

1)找到环境变量并作如下配置
如我的是(右键此电脑->属性->高级系统设置->环境变量)
在这里插入图片描述

2)将MAVEN_HOME 添加到Path系统变量
在系统变量里找到 Path并选中,点击编辑->新建,添加如下
在这里插入图片描述

3)检测是否配置成功
win+R 打开命令提示符,输入mvn -v,出现如下则说明环境变量配置成功
在这里插入图片描述

3、配置本地仓库

由于Maven默认的远程仓库在国外, 导致下载jar包时速度非常慢, 推荐使用国内的阿里云仓库,可提高访问和下载速度。若不配置,则本地仓库默认的路径如下(我的是C:\Users\ASUS\.m2)
在这里插入图片描述

1)首先在maven目录下新建一个 mvn_resp作为本地仓库,并复制该目录路径(D:\apache-maven-3.6.3\mvn_resp)
在这里插入图片描述

2)修改conf/settings.xml中的<localRepository>为一个指定目录,如下
在这里插入图片描述

4、配置阿里云私服

修改conf/settings.xml中的标签,为其添加如下子标签,完成后ctrl+s保存退出

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>
        http://maven.aliyun.com/nexus/content/groups/public/
    </url>
    <mirrorOf>central</mirrorOf>        
</mirror>

在这里插入图片描述

完成上述步骤后,maven就安装配置完成,接下来就可以在IDEA中创建Maven项目了。

三、IDEA中创建Maven项目

1、IDEA配置Maven

创建Maven项目前需要先配置Maven。
1)IDEA中 选择File --> Settings --> 搜素maven,如下
在这里插入图片描述

2)修改默认配置配置,设置IDEA使用本地安装的Maven,并修改配置文件路径,如下
在这里插入图片描述

配置好后点击Apply应用,然后OK即可。

2、创建Maven项目

1)创建模块(File->New->Module),选择Maven,点击Next
在这里插入图片描述

2)填写模块名称,坐标信息,点击finish,创建完成
在这里插入图片描述

如这是我填写的
在这里插入图片描述

创建完成后的目录结构如下
在这里插入图片描述

注:目录下没有webapp,因为目前创建的是java项目而非web项目,等后面学到web核心时会讲

3)编写HelloWorld,并运行
在这里插入图片描述

四、IDEA导入Maven项目

一般企业的项目都是由团队合作共同开发的,所以一些时候可能需要我们导入其他成员写好的Maven项目到我们的工程里,步骤如下,非常简单。
1)选择右侧Maven面板,点击+号
在这里插入图片描述

2)选中对应项目的pom.xml文件,双击即可

注:如果没有Maven面板,选择 View → Appearance > Tool Window Bars

五、Maven基本使用

1、Maven坐标

1)Maven 中的坐标是资源的唯一标识
2)使用坐标来定义项目或引入项目中需要的依赖

2、Maven坐标主要组成

groupld
- 定义当前Maven项目隶属组织名称(通常是域名反写,例如: com.itweb)
artifactld
- 定义当前Maven项目名称(通常是模块名称,例如order-service、goods-service)
version
- 定义当前项目版本号

3、Maven常用命令

Maven主要有以下常用命令,其功能即对应的英文意思,非常好理解,可以自己动手每一个命令都去试试。

compile 编译
clean 清理
test 测试
package 打包
install 安装

如下是装了Maven Helper插件后,能够非常方便地查看和运行命令。具体的插件安装流程不过多赘述。
在这里插入图片描述

六、Maven生命周期

Maven构建项目生命周期描述的是一次构建过程经历了多少个事件,对项目构建的生命周期划分为3套。
1)clean生命周期(清理工作)

clean:删除目标目录中的编译输出文件。

2)default生命周期(核心工作)

如编译compile,测试test,打包package,安装install等

3)site生命周期(产生报告,发布站点等)

site:生成项目文档和站点信息。

deploy-site:将生成的站点信息发布到远程服务器,以便共享项目文档。

注:同一生命周期内,执行后边的命令,前边的所有命令会自动执行

七、依赖管理 & 依赖范围

1、使用坐标导入jar包

步骤如下,IDEA非常智能,输入半边就会识别补全。
1)在pom.xml中编写标签
2)在标签中使用引入坐标
3)定义坐标的groupId,artifactId,version
4)点击刷新按钮,使坐标生效。
在这里插入图片描述

2、快捷键方式

在pom.xml中按alt + insert,选择Dependency,在弹出的面板中搜索对应坐标,然后双击选中对应坐标,点击刷新按钮,使坐标生效。

此种方式通过IDEA提供的模版,非常方便快捷,实现高效开发。

3、自动导入

每次坐标添加完成后,可以手动刷新使坐标生效。当然,还可以配置自动导入,即添加完成后不用手动刷新就能生效。步骤如下
1)选择IDEA中 File --> Settings
2)在弹出的面板中找到Build Tools
3)选择Any changes,点击ok 即可生效。
在这里插入图片描述

4、依赖范围(了解)

通过设置坐标的依赖范围(scope),可以设置对应jar包的作用范围,如

编译环境(Maven项目下对应的java目录)
测试环境(Maven项目下对应的test目录)
运行环境(导入jar包后运行时有效)

在这里插入图片描述

注:scope默认值为compile

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 热题 100_搜索二维矩阵

题解一&#xff1a; 二叉搜索树&#xff1a;从矩阵右上角观察&#xff0c;结构类似二叉搜索树&#xff0c;因此可以用类似的解法来做。具体做法是双指针从右上角开始&#xff0c;向左下角逐步搜索&#xff0c;如果当前值比目标值大&#xff0c;则向下移动&#xff0c;如果当前值…

体系班第十三节

1判断完全二叉树递归做法 有四种情况&#xff1a;1 左树完全&#xff0c;右数满&#xff0c;且左高为右高加一 2左满 &#xff0c;右满&#xff0c;左高为右高加一 3左满&#xff0c;右完全&#xff0c;左右高相等 4左右均满且高相等 #include<iostream> #include&l…

封装方法3

上一篇处理了单元格返回值改写 这一篇处理剩余普通方法返回值改写 已经给了Object的返回值&#xff0c;需要回调 //返回结果是22个单元格的值&#xff0c;怎么给调用方 Object value getCellValue(cell);没有给调用方的情况 value值内容是什么 处理ecxel-22个单元值的返回结…

重启 explorer 进程的正确做法(二)

重启资源管理器进程的方法不唯一&#xff0c;但长期以来大家对实施方法用的不到位。 在上一篇中我认为&#xff1a;“我们往往使用 TerminateProcess 并传入 PID 和特殊结束代码 1 或者 taskkill /f /im 等方法重启资源管理器( explorer.exe )&#xff0c;其实这是不正确的。我…

神经网络实战前言

应用广泛 从人脸识别到网约车&#xff0c;在生活中无处不在 未来可期 无人驾驶技术便利出行医疗健康改善民生 产业革命 第四次工业革命——人工智能 机器学习概念 机器学习不等价与人工智能20世纪50年代&#xff0c;人工智能是说机器模仿人类行为的能力 符号人工智能 …

DevOps本地搭建笔记(个人开发适用)

需求和背景 win11 wsl2 armbian(玩客云矿渣&#xff09;&#xff0c;构建个人cicd流水线&#xff0c;提高迭代效率。 具体步骤 基础设施准备 硬件准备&#xff1a;一台笔记本&#xff0c;用于开发和构建部署&#xff0c;一台服务器&#xff0c;用于日常服务运行。 笔记本…

C#,蛇梯问题(Snake and Ladder Problem)的算法与源代码

1 蛇梯问题 Snake and Ladder Problem 给定一个蛇梯板&#xff0c;找出从源单元格或第一个单元格到达目标单元格或最后一个单元格所需的最小掷骰次数。基本上&#xff0c;玩家可以完全控制掷骰子的结果&#xff0c;并希望找出到达最后一个单元格所需的最小掷骰次数。 如果玩…

【大厂AI课学习笔记NO.76】人工智能人才金字塔

人工智能领域&#xff0c;分为源头创新人才、产业研发人才、应用开发人才和实用技能人才。 人工智能领域的人才结构呈现多样化特点&#xff0c;主要可以分为源头创新人才、产业研发人才、应用开发人才和实用技能人才四大类。这四大类人才在人工智能领域的发展中各自扮演着不可或…

Day30:安全开发-JS应用NodeJS指南原型链污染Express框架功能实现审计

目录 环境搭建-NodeJS-解析安装&库安装 功能实现-NodeJS-数据库&文件&执行 安全问题-NodeJS-注入&RCE&原型链 案例分析-NodeJS-CTF题目&源码审计 开发指南-NodeJS-安全SecGuide项目 思维导图 JS知识点&#xff1a; 功能&#xff1a;登录验证&…

常见排序算法(C/C++)--- 动画演示

本篇将介绍一些常见的排序算法&#xff0c;如插入排序&#xff1a;直接插入排序、希尔排序&#xff1b;选择排序&#xff1a;选择排序、堆排序&#xff1b;交换排序&#xff1a;快速排序、冒泡排序&#xff1b;以及最后的归并排序。 对于以上的排序算法&#xff0c;我们总结了每…

VScode的列选

可以用来优化代码排布&#xff0c;让变量整齐成为一排 一、批量复制&#xff1a; 在1处左键单击&#xff0c;然后摁住SHIFTALT键的同时&#xff0c;左键单击2处&#xff0c;即可复制一整块的内容 如果所示 就可以复制了 二、批量输入 在1处左键单击&#xff0c;然后摁住SHI…

Day32:安全开发-JavaEE应用Servlet路由技术JDBCMybatis数据库生命周期

目录 JavaEE-HTTP-Servlet&路由&周期 JavaEE-数据库-JDBC&Mybatis&库 思维导图 Java知识点&#xff1a; 功能&#xff1a;数据库操作&#xff0c;文件操作&#xff0c;序列化数据&#xff0c;身份验证&#xff0c;框架开发&#xff0c;第三方库使用等. 框架…

RabbitMQ - 04 - Fanout交换机 (广播)

目录 部署demo项目 什么是Fanout交换机 实现Fanout交换机 1.控制台 声明队列 声明交换机 将交换机与队列绑定 2.编写消费者方法 3.编写生产者测试方法 部署demo项目 通过消息队列demo项目进行练习 相关配置看此贴 http://t.csdnimg.cn/hPk2T 注意 生产者消费者的…

转移表回调函数实现

回调函数实现 计算器的模拟&#xff08;函数指针数组的使用&#xff09;&#xff08;回调函数&#xff09; 简化 冗余 老的代码的问题就是 冗余 写死 不能完成不同的任务 函数调用的时候只需要知道地址就可以 calc计算器 这里也称之为转移表 #define _CRT_SECURE_NO_WAR…

微信小程序开发系列(二十五)·wxml语法·条件渲染wx:if, wx:elif, wx:else 属性组以及hidden 属性的使用

目录 1. 使用 wx:if、wx:elif、wx:else 属性组 2. 使用 hidden 属性 条件渲染主要用来控制页面结构的展示和隐藏,在微信小程序中实现条件渲染有两种方式: 1. 使用 wx:if, wx:elif, wx:else 属性组 2. 使用 hidden 属性 wx:if 和 hidden 二者的区别&#xff1a; 1. wx…

计算机网络-第4章 网络层(2)

主要内容&#xff1a;网络层提供的两种服务&#xff1a;虚电路和数据报&#xff08;前者不用&#xff09;、ip协议、网际控制报文协议ICMP、路由选择协议&#xff08;内部网关和外部网关&#xff09;、IPv6,IP多播&#xff0c;虚拟专用网、网络地址转换NAT&#xff0c;多协议标…

背包问题算法

背包问题算法 0-1背包问题二维数组一维数组 完全背包问题二维数组一维数组 多重背包问题一维数组 0-1背包问题 问题&#xff1a;背包的容量为9&#xff0c;有重量分别为[2, 4, 6, 9]的四个物品&#xff0c;价值分别为[3, 4, 5, 6]&#xff0c;求背包能装的物品的最大价值是多少…

构建LVS集群

一、集群的基本理论&#xff08;一&#xff09;什么是集群 人群或事物聚集&#xff1a;在日常用语中&#xff0c;群集指的是一大群人或事物密集地聚在一起。例如&#xff0c;“人们群集在广场上”&#xff0c;这里的“群集”是指大量人群聚集的现象。 计算机技术中的集群&…

C语言连接【MySQL】

稍等更新图片。。。。 文章目录 安装 MySQL 库连接 MySQLMYSQL 类创建 MySQL 对象连接数据库关闭数据库连接示例 发送命令设置编码格式插入、删除或修改记录查询记录示例 参考资料 安装 MySQL 库 在 CentOS7 下&#xff0c;使用命令安装 MySQL&#xff1a; yum install mysq…

arcgis栅格数据处理3——定义投影(同样适用于其他类型文件)

进行数据连接时可能出现未设置投影无法链接的情况&#xff0c;需要先定义投影 点击最右侧“目录”&#xff0c;弹出带有系统工具的面板&#xff0c;点击“data management tools”点击“投影”&#xff0c;“定义投影”