关于配置这方面。大家可以看看尚硅谷讲的003-maven-安装和配置_哔哩哔哩_bilibili
问题:1.为什么要引入maven?
eclipse,idea在构建和打包项目时,结构不同,不能互通。因此,采用maven结构,maven的功能是项目构建和依赖的下载。
2.如何创建一个maven格式的类或web项目呢?(可以看一下尚硅谷视频,很清晰)
类结构 如下: web项目结构如下:
3.创建一个新的工程时,有一个pom.xml文件,gavp的设置
g a 代表的是该工程在本地仓库位置(也就是你设置的<localRepository>D:\repository</localRepository>),p 代表的是打包方式
4.依赖的下载过程?
首先,会从你的本地仓库中寻找是否有当前依赖,如果没有的话,会去阿里巴巴镜像站中下载依赖。阿里巴巴镜像站其实起的是中间maven仓库的作用。有时候你会发现当你将依赖项的gav属性设置后,还会报错误。当你刷新maven后,错误消失,这是因为你的本地仓库中没有该依赖,它会去远程仓库中下载。
5.maven解决冲突依赖的方式?
1.短路优先原则
2.依赖路径相同的情况下,先声明的优先。
我本来以为会先将pom文件中的依赖项先读取完,先获取依赖项中的依赖。实际上,maven的依赖获取顺序是一个依赖项和依赖项中的依赖。再接上下一个依赖以及它的依赖项。
6.下载依赖中可能会出现的问题的解决
-
检查网络连接和 Maven 仓库服务器状态。
-
确保依赖项的版本号与项目对应的版本号匹配,并检查 POM 文件中的依赖项是否正确。
-
清除本地 Maven 仓库缓存(lastUpdated 文件),因为只要存在lastupdated缓存文件,刷新也不会重新下载。本地仓库中,根据依赖的gav属性依次向下查找文件夹,最终删除内部的文件,刷新重新下载即可!
7.maven的构建过程以及构建命令周期:
清理 (clean) -> 编译(compile) -> 测试 (test) -> 报告(site) -> 打包(package) -> 部署 (install)
3个周期 : 1.清理周期
2.默认周期
3.报告周期:site
在使用默认周期时, mvn clean install 会将intsall之前的模块自动完成
8.修改插件配置:<build>
<!-- jdk17 和 war包版本插件不匹配 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
</plugins>
</build>
9.不同的功能或工程可能会使用不同版本的依赖项,这些依赖项如何整合起来很麻烦,如何解决这种情况呢?
此时就用了maven工程的继承和聚合关系,通过父类(无代码的实现,删除src且packaging方式为pom) 通过dependenManagement来限制子类的依赖项,子类如果采用不同版本的依赖的话,会覆盖父类的版本号。
聚合体现
(common-service为自己的jar包)
继承体现
(其他子类来引入自己的jar包)
10.jar包的实现原理?
jar包的g a属性可以帮助本地仓库或远程从仓库找到已经部署的包,其实自己的一般工程也是可以部署到maven上,供自己的其他模块来使用的。