【Maven】学习笔记一基本概念

一基本概念

1、中央仓库:该仓库存储了互联网上的jar,由Maven团队来维护,地址是:http://repo1.maven.org/maven2/

<dependency> 使用

这个标签揭示了jar 的查找坐标:groupId、artifactId、version

version分为:开发版本(Snapshot)和发布版本(Release)用来保存稳定的发行版本

 

Maven:使用Snapshot版本,在开发过程中B发布的版本标志为Snapshot版本,A进行依赖的时候选择Snapshot版本,那么每次B发布的话,会在私服仓库中,形成带有时间戳的Snapshot版本,而A构建的时候会自动下载B最新时间戳的Snapshot版本!

 

2、依赖传递(transitive)、Maven的最近依赖策略

依赖传递:如果A依赖B,B依赖C,那么引入A,意味着B和C都会被引入

Maven的最近依赖策略:如果一个项目依赖相同的groupId、artifactId的多个版本,那么在依赖树(mvn dependency:tree)中离项目最近的那个版本将会被使用。(从这里可以看出Maven是不是有点小问题呢?能不能选择高版本的进行依赖么?据了解,Gradle就是version+策略)

使用<dependencyManagement> [这种主要用于子模块的版本一致性中]

使用<exclusions>[在实际中我们可以在IDEA中直接利用插件帮助我们生成]

使用<dependency>

 

查看依赖:

 1) mvn dependency:tree 命令会列出依赖关系树及各级依赖关系

 2) mvn dependency:analyze 分析依赖关系

 

引入依赖的最佳实践,提前发现问题

mvn dependency:tree命令形成依赖树。看看我们新加入的依赖,是否存在传递依赖,传递依赖中是否和依赖树中的版本存在冲突,如果存在多个版本冲突,利用上文的方式进行解决!

 

maven 规范化目录结构

 

3、maven生命周期

clean:有问题,多清理!

package:打成Jar or War包,会自动进行clean+compile

install:将本地工程Jar上传到本地仓库

deploy:上传到私服

 

maven 生命周期:存在编译、测试、运行

compile:默认的scope,运行期有效,需要打入包中。

provided:编译期有效,运行期不需要提供,不会打入包中。

runtime:编译不需要,在运行期有效,需要导入包中。(接口与实现分离)

test:测试需要,不会打入包中。

system:非本地仓库引入、存在系统的某个路径下的jar。(一般不使用)

 

https://www.cnblogs.com/hafiz/p/8119964.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值