在我们的系统环境变量中
配置如下配置:
-
MAVEN_HOME maven的目录
-
在系统的path中配置
%MAVEN_HOME%\bin
-
之后在命令行窗口中输入
mvn -version
-
测试Maven是否安装成功,保证必须配置完毕!
环境变量配置好之后需要测试环境配置结果,我们需要在DOS命令窗口下输入以下命令查看输出
mvn -v
如果能够看到输出的maven的版本信息代表配置成功
-
国内建议使用阿里云的镜像(可以百度搜
maven 阿里云镜像
,也可以打开下方链接)
- 在
settings.xml
里面的mirrors
标签里面导入
aliyunmaven
*
阿里云公共仓库
https://maven.aliyun.com/repository/public
在Maven -bin 的同级目录下建立一个文件夹 maven-repo
建立一个本地仓库:localRepository
- 在
settings.xml
里面的localRepository下导入
D:\Develop\apache-maven-3.6.1\maven-repo
=============================================================================
仓库:用于存储资源,主要是各种jar包
关于仓库,我们前面讲到了有三种:本地仓库,私服,中央仓库,其中私服和中央仓库都属于远程仓库
中央仓库:maven团队自身维护的仓库,属于开源的
私服:各公司/部门等小范围内存储资源的仓库,私服也可以从中央仓库获取资源
本地仓库:开发者自己电脑上存储资源的仓库,也可从远程仓库获取资源
私服的作用:
(1)保存具有版权的资源,包含购买或自主研发的jar
(2)一定范围内共享资源,能做到仅对内不对外开放
我们说maven的仓库里存储了各种各样的资源(jar包),那这些资源我们如何找到它们呢?我们需要知道它们具体的一个位置才能知道如何找到它们,这个就叫坐标
坐标:maven中的坐标用于描述仓库中资源的位置
maven坐标的主要组成如下:
-
groupId:定义当前资源隶属组织名称(通常是域名反写,如:org.mybatis;com.itheima)
-
artifactId:定义当前资源的名称(通常是项目或模块名称,如:crm,sms)
-
version:定义当前资源的版本号
-
packaging:定义资源的打包方式,取值一般有如下三种
-
jar:该资源打成jar包,默认是jar java工程打包为jar
-
war:该资源打成war包 web工程打包为war
-
pom:该资源是一个父资源(表明使用maven分模块管理),打包时只生成一个pom.xml不生成jar或其他包结构
<project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
4.0.0
war
com.itheima
web01
1.0-SNAPSHOT
==================================================================================
-
启动IDEA
-
创建一个
MavenWeb
项目
- 创建完成等待项目初始化完成
-
观察maven仓库中多了什么东西?
-
注意:IDEA项目创建成功后,看一眼Maven的配置
到这里,Maven在IDEA中的配置和使用就OK了!
我们在创建的MavenWeb
项目的 main 目录下创建 java,resources
- 鼠标悬停在java文件夹,右键
- resources 也同样标记
创建MavenWeb
项目我们需要手动去补全目录,并且要对补全的目录进行标记,切记
==================================================================================
我们也可以不配置Tomcat,而是在 pom.xml
中配置 tomcat 插件来运行项目
-
在Maven仓库中搜索 tomcat Maven
-
找到 org.apache.tomcat.maven
我们使用2.1版本的,相对来说稳定一些
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
80
utf-8
插件配置好后,在IDEA右侧maven-project
操作面板上可以看到该插件,并且可以利用该插件启动项目
运行后该插件会给我们一个可运行地址:
pom.xml 是Maven的核心配置文件
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
4.0.0
com.kuang
javaweb-01-maven
1.0-SNAPSHOT
war
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
junit
junit
4.11
javaweb-01-maven
maven-clean-plugin
3.1.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.8.0
maven-surefire-plugin
2.22.1
maven-war-plugin
3.2.2
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
=============================================================================
依赖是指在当前项目中运行所需的jar,依赖配置的格式如下:
Junit
Junit
4.12
依赖传递:
依赖具有传递性,分两种
(1)直接依赖:在当前项目中通过依赖配置建立的依赖关系
(2)间接依赖:被依赖的资源如果依赖其他资源,则表明当前项目间接依赖其他资源
6.1.1、依赖传递冲突
依赖传递的冲突问题:
在依赖传递过程中产生了冲突,我们有三种优先法则
(1)路径优先:当依赖中出现相同资源时,层级越深,优先级越低,反之则越高
(2)声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖靠后的
(3)特殊优先:当同级配置了相同资源的不同版本时,后配置的覆盖先配置的
以一个项目为根,直接依赖称为1度资源,直接依赖的直接依赖称为2度资源,直接依赖的直接依赖的直接依赖称为3度资源。
当然依赖冲突在这里我们并不需要记,后面会有如何解决此问题的办法。
6.1.2、可选依赖
可选依赖指的是对外隐藏当前所依赖的资源➡不透明
- 加一个
<optional>
标签
Junit
Junit
4.12
true
6.1.3、排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
Junit
Junit
4.12
log4j
log4j
依赖的jar默认情况可以在任何地方可用,可以通过scope
标签设定其作用范围
这里的范围主要是指以下三种范围
(1)主程序范围有效(src/main目录范围内)
(2)测试程序范围内有效(src/test目录范围内)
那么如何才能正确的掌握Redis呢?
为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题
-
并发编程面试题汇总
-
JVM面试题汇总
-
Netty常被问到的那些面试题汇总
-
Tomcat面试题整理汇总
-
Mysql面试题汇总
-
Spring源码深度解析
-
Mybatis常见面试题汇总
-
Nginx那些面试题汇总
-
Zookeeper面试题汇总
-
RabbitMQ常见面试题汇总
JVM常频面试:
Mysql面试题汇总(一)
Mysql面试题汇总(二)
Redis常见面试题汇总(300+题)
og4j
依赖的jar默认情况可以在任何地方可用,可以通过scope
标签设定其作用范围
这里的范围主要是指以下三种范围
(1)主程序范围有效(src/main目录范围内)
(2)测试程序范围内有效(src/test目录范围内)
那么如何才能正确的掌握Redis呢?
为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题
-
并发编程面试题汇总
-
JVM面试题汇总
-
Netty常被问到的那些面试题汇总
-
Tomcat面试题整理汇总
-
Mysql面试题汇总
-
Spring源码深度解析
-
Mybatis常见面试题汇总
-
Nginx那些面试题汇总
-
Zookeeper面试题汇总
-
RabbitMQ常见面试题汇总
JVM常频面试:
[外链图片转存中…(img-KwzxylxN-1714417447582)]
Mysql面试题汇总(一)
[外链图片转存中…(img-zSNEUrh4-1714417447583)]
Mysql面试题汇总(二)
[外链图片转存中…(img-1TyqX0BW-1714417447583)]
Redis常见面试题汇总(300+题)
[外链图片转存中…(img-7n08iOYD-1714417447583)]