Maven基础知识
Maven基础概念
仓库
- 仓库:用于存储资源,包含各种jar包
中间环节添加一个私服,用来避免多人同时调取同一个资源,国外仓库的传输速度过慢且二次传输的问题。通过私服局域网传输速度会加快很多。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tsNVvqs2-1645754953835)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113095819904.png)]](https://i-blog.csdnimg.cn/blog_migrate/49111a589fc4a663c14a7d0562b57f9f.png)
-
仓库分类:
-
本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
-
远程仓库:非本机电脑上的仓库,为本地仓库提供资源
-
- 中央仓库:MAVEN团队维护,存储所有资源的仓库
- 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
-
-
私服的作用:
-
保存具有版权的资源,包含购买或自主研发的jar
-
- 中央仓库中的jar都是开源的,不能存储具有版权的资源
-
一定范围内共享资源,仅对内部开放,不对外共享
-
小节
- 仓库的概念与作用
- 仓库的分类
- 本地仓库
- 远程仓库
- 中央仓库
- 私服
坐标
-
什么是坐标?
Maven中的坐标用于描述仓库中资源的位置
https://repo1.maven.org/maven2/
-
Maven坐标主要组成
groupid:定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybatis)
artifactId:定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)
version:定义当前项目版本号
packaging:定义该项目的打包方式
-
Maven坐标的作用
使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交友
小节
- 坐标的概念与作用
- 坐标的组成
- 组织ID
- 项目ID
- 版本号
仓库配置(settings.xml)
-
Maven启动后,会自动保存下载的资源到本地仓库
-
默认位置
Default: ${user.home}/.m2/repository
当前目录位置为登录用户名所在目录下的.m2文件夹中
-
自定义位置
E:maven_cangku epository
当前目录位置为D:maven epository文件夹中
-
远程仓库配置
-
Maven默认连接的仓库位置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UWJFKfX1-1645754953836)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113103824661.png)]](https://i-blog.csdnimg.cn/blog_migrate/27fbd6484ec267423144c9efe7609611.png)
-
-
镜像仓库配置
-
在setting文件中配置阿里云镜像仓库
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D5dRdfcI-1645754953836)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113103932833.png)]](https://i-blog.csdnimg.cn/blog_migrate/9fc5a10e584823a47c52fd514ac629ed.png)
-
-
具体配置如下图所示
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DtjjzWIb-1645754953837)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113104014704.png)]](https://i-blog.csdnimg.cn/blog_migrate/fe2610df5c84960517e5dd150e448743.png)
全局Setting与用户setting区别
- 全局setting定义了当前计算器中Maven的公共配置
- 用户setting定义了当前用户的配置
小节
- 配置本地仓库(资源下到哪)
- 配置阿里镜像仓库(资源从哪来)
- setting文件的区别
第一个Maven项目(手工制作)
mvn archetype:generate -DgroupId=com.ahao -DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cF4Q85pf-1645754953838)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113202331979.png)]](https://i-blog.csdnimg.cn/blog_migrate/cbe3550357b4efc50506be21defd47a4.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HfXS9cWd-1645754953839)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113201802802.png)]](https://i-blog.csdnimg.cn/blog_migrate/a4bd698b2d61ca18be623e029aa0df13.png)
小节
- 插件创建Maven工程
- Maven web工程目录结构
第一个Maven项目(IDEA生成)
配置maven环境,支持3.6.1版本
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ztFV6Lr8-1645754953839)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113213202449.png)]](https://i-blog.csdnimg.cn/blog_migrate/74734d4f2f3a4e79826dd470b0c7590a.png)
点击
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-76jiyWJH-1645754953840)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113213320808.png)]](https://i-blog.csdnimg.cn/blog_migrate/bca119d40fa9e347bfc7c1732f80cdff.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BAZCjubh-1645754953841)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113213402748.png)]](https://i-blog.csdnimg.cn/blog_migrate/fc24a1794f758bb1f0ca284707d51bd0.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5PjOnCaQ-1645754953842)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113213427224.png)]](https://i-blog.csdnimg.cn/blog_migrate/1d9172899bb4280b81c7fea324e21a8b.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L2V09aKL-1645754953842)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113213455435.png)]](https://i-blog.csdnimg.cn/blog_migrate/f0972595777f04d14a24cf087b8624a6.png)
一路到底,就生成了,分别赋予不同的属性,并在test中添加resources
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hkrrcycg-1645754953843)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113213553526.png)]](https://i-blog.csdnimg.cn/blog_migrate/ad16a296ceca60a69e0f779c793090f4.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sL32fyQ9-1645754953844)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113213630086.png)]](https://i-blog.csdnimg.cn/blog_migrate/8a94facba702108038511ea0032267b6.png)
赋予test resources属性
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MFFRxray-1645754953845)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113213715478.png)]](https://i-blog.csdnimg.cn/blog_migrate/7750d94eaa77cfb38af0ce9931983edf.png)
然后可以点击下图所示的位置,可看到编译等方法。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Dj5vQV3-1645754953848)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113213815734.png)]](https://i-blog.csdnimg.cn/blog_migrate/9c94188e3c536bf74af44298cbaefae4.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OrSBsOHN-1645754953848)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113213855264.png)]](https://i-blog.csdnimg.cn/blog_migrate/72aa26d787ca5c1ef00f58952fbd005c.png)
在xml文件中,添加如下内容后需要在maven中点击刷新按钮
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7y4F7mjH-1645754953849)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113214034855.png)]](https://i-blog.csdnimg.cn/blog_migrate/985994529930efcd94fc185a0d9099b6.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p9iTaqfc-1645754953849)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113214116224.png)]](https://i-blog.csdnimg.cn/blog_migrate/a96338a8ce952cb7477205210995cc48.png)
**另外一个方法:**点击编辑配置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nGgLBWyl-1645754953850)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113214251017.png)]](https://i-blog.csdnimg.cn/blog_migrate/36153acc491f5570030da20334659c3e.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kPZNnoQ6-1645754953851)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113214420584.png)]](https://i-blog.csdnimg.cn/blog_migrate/191cafc40f763e7a9f3ab745231c29dd.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L5Ljvw4E-1645754953851)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220113214435073.png)]](https://i-blog.csdnimg.cn/blog_migrate/c65c86fe5c4f0864d1b9f7ee2bf595f1.png)
小节
- Maven环境配置
- Maven项目创建
- Maven命令执行
另外一种方式生成:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8rM6Kdgt-1645754953852)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114102359111.png)]](https://i-blog.csdnimg.cn/blog_migrate/93c546913e4801f627c331821bf8b4fc.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KJLyfAu6-1645754953852)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114102418023.png)]](https://i-blog.csdnimg.cn/blog_migrate/ae0126d9d789d1c78fb444c4f29deabb.png)
点击对勾,并搜索quick,随后起名字,如com.ahao java01,然后一路next
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ol56Yxj3-1645754953853)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114102456336.png)]](https://i-blog.csdnimg.cn/blog_migrate/c78b706842edecc4518ab9a354570eb8.png)
之后按照同样的方式添加resources包。并赋予属性(不同的颜色包)。
tomcat插件安装与web工程启动
按照这个顺序弄好web项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ubBkqZQE-1645754953854)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114110148367.png)]](https://i-blog.csdnimg.cn/blog_migrate/4f1eac871985be07d8fc7b91d154e997.png)
配置xml文件
在build中加入tomcat包,需要去maven仓库找
Maven Repository: org.apache.tomcat.maven ? tomcat7-maven-plugin ? 2.1 (mvnrepository.com)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-60WIIgNL-1645754953854)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114110352075.png)]](https://i-blog.csdnimg.cn/blog_migrate/4fe294aa929e4e8342065e79df6be707.png)
复制到xml中
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ahao</groupId>
<artifactId>web01</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>web01 Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
</dependencies>
<!--构建-->
<build>
<!--设置插件-->
<plugins>
<!--具体的插件配置-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
</plugin>
</plugins>
</build>
</project>
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZlQHqmB-1645754953855)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114110506620.png)]](https://i-blog.csdnimg.cn/blog_migrate/95024566dd78cdbd56ce4fd55e49ad0e.png)
另外一种方式就是在编辑配置中,添加maven,后输入tomcat7:run
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LYssW5E7-1645754953855)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114105504653.png)]](https://i-blog.csdnimg.cn/blog_migrate/1598f465dc9edf9bc70c5d4a1021a0c5.png)
所有的说明:配置
<?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">
<!--指定pom的模型版本-->
<modelVersion>4.0.0</modelVersion>
<!--组织id-->
<groupId>com.ahao</groupId>
<!--项目id-->
<artifactId>web01</artifactId>
<!--版本号:release,shapshot-->
<version>1.0-SNAPSHOT</version>
<!--打包方式,web工程打包为war,jave工程打包为jar-->
<packaging>war</packaging>
<name>web01 Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!--设置当前工程的所有依赖-->
<dependencies>
<!--具体的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
<!--构建-->
<build>
<!--设置插件-->
<plugins>
<!--具体的插件配置-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
</plugin>
</plugins>
</build>
</project>
依赖管理
依赖配置
- 依赖指当前项目运行所需的jar,一个项目可以设置多个依赖
- 格式:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ub44DUjo-1645754953856)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114135202006.png)]](https://i-blog.csdnimg.cn/blog_migrate/ac84248e8043b69b5d794821419cc975.png)
依赖传递
- 依赖具有传递性
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
说白了就是,引用其他人使用的工程后,会继承他人所依赖的某些jar包。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pWF6NYcn-1645754953856)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114135938580.png)]](https://i-blog.csdnimg.cn/blog_migrate/a6e1f10909088358ac255b75e613a9aa.png)
依赖传递冲突问题
- 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
- 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖
可选依赖指对外隐藏当前所依赖的资源–不透明,通过optional设置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OWjwA6vF-1645754953857)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114141039135.png)]](https://i-blog.csdnimg.cn/blog_migrate/8a63660a8bb6f0c96b0920d78539faf3.png)
排除依赖
- 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本–不需要
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w7kyBE4E-1645754953857)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114141400475.png)]](https://i-blog.csdnimg.cn/blog_migrate/3be8ba7fe7ce7b52d0c9c35465a7ea5e.png)
小节
- 依赖管理
- 依赖传递
- 可选依赖(不透明)
- 排除依赖(不需要)
依赖范围
- 依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围
- 作用范围
- 主程序范围有效(main文件夹范围内)
- 测试程序范围有效(test文件夹范围内)
- 是否参与打包(package指令范围内)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k6Si7D97-1645754953858)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114141946134.png)]](https://i-blog.csdnimg.cn/blog_migrate/123a1887dbf1f9a27cb5eea47989e4bd.png)
使用方法:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yzAw64Jo-1645754953858)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114142056010.png)]](https://i-blog.csdnimg.cn/blog_migrate/c13952c378591d792598845a803d77ef.png)
依赖范围传递性
- 带有依赖范围的资源在进行传递时,作用范围将受到影响
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bxRhV51V-1645754953858)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114142333496.png)]](https://i-blog.csdnimg.cn/blog_migrate/3669f7f4324fbb9f4bef1d513f450a18.png)
小节
- 依赖范围
- 依赖范围传递性(了解)
生命周期与插件
项目构建生命周期
- Maven构建生命周期描述的是一次构建过程经历了多少个事件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DkWrynHR-1645754953859)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114142707607.png)]](https://i-blog.csdnimg.cn/blog_migrate/dbfa1ecae3fef315594124fba12c2212.png)
- Maven对项目构建的生命周期划分为3套
- clean:清理工作
- default:核心工作,例如编译,测试,打包,部署等
- site:产生报告,发布站点等
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JZl7LdMO-1645754953860)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114142935431.png)]](https://i-blog.csdnimg.cn/blog_migrate/40ac7909481c78a62b14065295740aee.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fNpLMoSn-1645754953860)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114142951009.png)]](https://i-blog.csdnimg.cn/blog_migrate/09b57e4e360e64f68760094a6e9773a0.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uk7OFOHn-1645754953861)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114143004603.png)]](https://i-blog.csdnimg.cn/blog_migrate/c34055496f34b75b4210035c9af1febe.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JR7HzhdO-1645754953861)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114143136920.png)]](https://i-blog.csdnimg.cn/blog_migrate/04cba900e2401f07249d5ec1d2ed8ae9.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fop46g44-1645754953862)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114143800267.png)]](https://i-blog.csdnimg.cn/blog_migrate/0865bc4f7dd0ab4cfbb4fc4646e95cdd.png)
插件位置:Maven – Available Plugins (apache.org)
类型有jar、test-jar
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20WIlN0P-1645754953862)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114144030586.png)]](https://i-blog.csdnimg.cn/blog_migrate/21e4e25cff9348c40db1f96c3f9ff6b0.png)
小节
- 生命周期
- 插件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0NtoJEbx-1645754953863)(C:Users,546AppDataRoamingTypora ypora-user-imagesimage-20220114144321401.png)]](https://i-blog.csdnimg.cn/blog_migrate/9e734cdd24ba54d51ec5b8c6e4c4c776.png)
本文概述了Maven的基础概念,包括仓库的分类、坐标体系、settings.xml配置、依赖管理和生命周期。介绍了本地仓库、中央仓库和私服的角色,以及如何通过坐标标识资源。此外,还详细讲解了如何使用IDEA创建Maven项目、安装Tomcat插件和管理依赖,以及解决依赖冲突的方法。
265

被折叠的 条评论
为什么被折叠?



