04初识Maven核心概念(下)
1.Maven依赖管理
所谓依赖就是一个项目运行所需要的第三方类库文件,这些类库文件在Maven中被称为依赖或者是构建。
Maven的坐标可以唯一的确定一个依赖,Maven也是通过坐标来管理依赖关系,在POM中是通过dependency来定义
Maven坐标唯一确定一个依赖
dependency定义管理一个依赖
实际项目中,通过dependency定义管理的依赖会非常多,被依赖的jar文件可能也会有自己的依赖关系,但是我们无需将这种依赖关系定义在pom文件中,原因是因为Maven非常体贴的传递依赖特性,那什么是传递性依赖呢?
Maven支持传递性依赖,这也是Maven最强大特征之一,一个复杂的项目包含很多依赖关系,也有可能包含于其他构建中的依赖,加入我们自己的项目依赖一个库,但是这个库又依赖于多个其他的库,这种时候,我们无需找出所有依赖关系并在pom文件中管理,只需要加入我们项目直接依赖的库就可以,Maven会自动帮助我们将这种间接的加入到我们的项目当中来,并且还会自动处理依赖之间的冲突,Maven的这种特性就叫做Maven的传递性依赖。
Maven的依赖范围:scope
compile(编译范围--默认):在所有的classPath中都是可用的
provided(已提供范围):只有在jdk或者一个容器提供依赖之后才会使用
runtime(运行时范围):在运行和测试系统时需要,编译的时候不需要
test(测试范围):在一般编译和运行的时候都不需要,只有在测试编译或者测试运行阶段才可使用,比如说jUnit
system(系统范围):与provided类似,但是该范围必须显示的提供一个对于本地系统中jar文件的路径。
2.Maven仓库
什么是Maven仓库?
在没有使用Maven的时候,我们用Eclipse工具创建web项目的时候,通常会在项目的根目录下创建一个lib的子目录,在lib目录下我们存放着第三方的依赖jar文件,比如说log4j、jUnit等。每创建一个项目,就需要重复引入一些三方jar文件到lib目录下,这个lib目录就相当于我们项目的一个依赖仓库。那么对于Maven来说,它的仓库也是一个位置,该位置放置了所有的jar文件,但是不同的是,所有的Maven项目都会从同一个Maven仓库中获取到自己所需要的依赖jar文件,这样的设计节省了磁盘资源,可以说Maven仓库就是一个存放了所有依赖的仓库,这个仓库通过依赖的坐标对所有的依赖进行了管理。
本地仓库和远程仓库:
在运行Maven的时候,Maven所需要的所有依赖都是直接从本地仓库获取,如果本地仓库没有,它会自动尝试从远程仓库下载依赖到本地仓库,然后使用本地仓库的依赖,如果本地仓库和远程仓库都找不到所需要的依赖文件,那么Maven就会报错。
查看并修改本地仓库的位置:(Windows下默认本地仓库位置是在c盘中命名为.m2的文件夹中)
Maven的安装目录\conf\settings.xml文件中
说明:当我们运行install的时候,实际是将项目生成的构件安装到了本地仓库,也就是说只有install之后,其他项目才能使用此项目生成的构件。
Maven的远程仓库
我们在构建项目的时候,并没有手动的下载任何的jar文件,而项目却能成功的构建。这是因为我们在用Maven构建项目的时候如果在本地Maven仓库中找不到相应的依赖,那么Maven会自动的去查询远程仓库并且从远程仓库将相关依赖下载到本地仓库,Maven本身自带了一个远程仓库,该远程仓库是Maven的中央仓库。
pom.xml-->>effective pom
Maven中央仓库的配置,该仓库其实是从super Pom中继承而来
除此之外,我们还可以pom中配置其他的远程仓库。。。。
3.项目站点报告
使用Maven生成一个项目站点,Maven可以为项目生成一个静态站点,该站点包含了项目的各种信息,同时也能够生成项目报告的各种信息,只要配置相应的插件就可以。
进入项目根目录,命令:
mvn site
查看项目静态站点:
项目根目录/target/site/intex.html打开
修改pom文件 mvn clean site
修改后静态站点: