maven学习笔记

1.maven 仓库概述:

maven仓库用来存储jar包。maven项目都是从仓库中获取jar包。maven仓库分三种:本地仓库,远程仓库,中央仓库。
本地仓库:用来存储从远程仓库及中央仓库下载的jar包,自己来维护。项目使用的jar包优先从本地仓库获取。本地仓库的默认位置在user.home/.m2/repository。user.home/.m2/repository。{user.home}表示用户所在的位置。
远程仓库:如果本地仓库没有所需要的jar包,默认去远程仓库下载。远程仓库由公司来进行维护又可称为私服。
中央仓库:中央仓库由maven团队来进行维护,服务于整个互联网。其仓库中存储大量的jar包。

三种仓库的关系:本地项目需要jar包,先从本地仓库中获取,如果本地仓库中没有,则从私服中获取,如果私服没有,则从中央仓库获取。获取到后,本地仓库及远程仓库各存储一份。如果没有远程仓库,本地仓库则直接从中央仓库获取,然后在本地仓库存储一份。

2.主要命令:

clean:清理上一次构建生成的文件
validate:验证工程是否正确,所有需要的资源是否可用。
compile:编译项目的源代码。
test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
package:把已编译的代码打包成可发布的格式,比如jar。
integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
verify:运行所有检查,验证包是否有效且达到质量标准。
install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

3.依赖传递

A.jar依赖于B.jar,而B.jar依赖于C.jar,那么要怎么修改配置文件,才会让A.jar 也依赖 B.jar 呢?
这要看传递依赖的jar包引入时的依赖范围——只有依赖范围为compile时可以访问
即 要使A.jar 依赖于C.jar 当且仅当C.jar的范围是compile
maven学习笔记_第1张图片
依赖原则:

(1) 路径最短优先原则
存在两个项目依赖同个类型但不同版本的jar包,这个时候会优先选择路径短的
项目配置情况:
HelloWrold2 依赖 HelloWrold
HelloWrold2 依赖 Junit3.8 jar
HelloWrold 依赖 Junit4.0 jar
maven学习笔记_第2张图片
此时HelloWrold保持原来的junit-3.8.jar不变

(2) 路径长度相同
路径长度相同的情况下,又可以分为是否有在同一个pom.xml两种情况
2.1 覆盖:
如果在同一pom.xml文件中有2个相同的依赖;后面声明的会覆盖前面的依赖
2.2 优先:
如果是在不同pom.xml中有2个相同的依赖;则先声明的依赖,会覆盖后面生命的依赖
如下HelloWorld2依赖项目HelloWorld,和项目HelloWorld3
HelloWorld与HelloWorld3都有不同版本的commons-fileupload.jar
显然,先写在前面的HelloWorld3的jar包被采用了
maven学习笔记_第3张图片

你可能感兴趣的:(学习笔记)