通常来讲,当我们要使用 Maven 仓库中的资源时,是不需要我们去人为干预的。假设我们要使用某一个驱动,我们首先去 pom.xml
中进行配置,接着 Maven 将自动先去检查我们的本地仓库中是否存在该资源,如果没有,那么就到私服中午查找,如果还没有找到,那么就到中央仓库镜像中去查询,最后如果连镜像仓库中也没法找到,那就只有到中央仓库去进行搜索了。
坐标,其实就相当于我们人的身份证,它是唯一的,用于标识一个项目。一个坐标的组成一般有如下几部分,前三者必须,packaging
可选,classifier
不能直接定义。
-
groupId:定义 Maven 项目隶属的实际组织,一般约定以创建该项目的组织名称的逆向域名开头。比如说公司的域名是:google.com,那么我们就可以将
groupId
设置为com.google
。 -
artifactId:定义实际项目中的一个 Maven 项目(模块),推荐使用实际项目名作为前缀。
-
version:定义 Maven 项目当前所处版本,一般使用三位数字进行标识,如
1.1.1
。 -
packaging:项目打包方式,可以是
jar
、war
、rar
、ear
、pom
,默认使用jar
。 -
classifier:帮助定义构建输出的一些附属构建,与主构件对应。
-
dependencies:添加项目所需的
jar
所对应的 Maven 坐标,,表示我们项目中所需的各种资源说明。 -
dependency:
dependencies
的一个子标签,一个dependency
对应一个坐标。 -
properties:用于设置属性。
-
scope:表示依赖的范围,通常有如下几种:
| 依赖范围 | 编译期有效 | 测试期有效 | 运行时有效 | 打包有效 |
| — | — | — | — | — |
| compile
| 😄 | 😄 | 😄 | 😄 |
| test
| 😡 | 😄 | 😡 | 😡 |
| privided
| 😄 | 😄 | 😡 | 😡 |
| runtime
| 😡 | 😄 | 😄 | 😄 |
| system
| 😄 | 😄 | 😡 | 😡 |
以下就是一个最简单的 Maven 坐标实例:
com.cunyu
MavenDemo
1.1.1
冲突产生原因
Maven 项目中,通常都会定义血多 dependency
,每个 dependency
内部也会定义它的 dependency
,而有时各个依赖之间会产生冲突,冲突的原因通常主要是 由于 jar
包依赖的传递性,如果在一个项目中同时引入了一个依赖的不同版本,就可能导致依赖冲突。
解决冲突的办法
当冲突产生时,需要如何解决呢?通常我们有两种处理策略:
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
最后希望可以帮助到大家!
千千万万要记得:多刷题!!多刷题!!
之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!
篇幅有限,以下只能截图分享部分的资源!!
(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)
(2)刷的算法题(还有左神的算法笔记)
(3)面经+真题解析+对应的相关笔记(很全面)
(4)视频学习(部分)
ps:当你觉得学不进或者累了的时候,视频是个不错的选择
在这里,最后只一句话:祝大家offer拿到手软!!
对应的相关笔记(很全面)
[外链图片转存中…(img-pYlVsC2O-1711016777875)]
(4)视频学习(部分)
ps:当你觉得学不进或者累了的时候,视频是个不错的选择
在这里,最后只一句话:祝大家offer拿到手软!!