廖雪峰Java12maven基础-1maven入门-2依赖管理

如果我们的项目依赖第三方的jar包:

  • Commons Logging发布的jar包在那里下载?
  • 使用Log4j需要哪些jar包
  • 其他依赖:junit,Javamail,MySQL驱动...

搜索引擎——手动下载——解压——放入classpath:过程非常繁琐
maven解决了依赖管理的问题
Hello项目-->依赖abc -> abc又依赖于xyz
当我们生命了abc的依赖时,maven自动把adb依赖的xyz jar包也加入到项目依赖中,不需要我们自己去研究abc是否需要依赖xyz。
所以maven的第一个作用就是解决了依赖管理,我们声明了自己的项目,需要abc,maven就会自动倒入abc的jar,再判断出abc又需要依赖xyz,又会自动倒入xyz的jar包,这样最终我们的jar包会依赖abc和xyz这2个jar包
一个复杂的依赖示例

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.4.2Release</version>
</denpendency>

当我声明1个spring-boot-start-web依赖时,maven会自动解析并判断出需要大概20-30个依赖。如果手动去管理这些依赖是非常费时费力的,而且出错的概率很大,maven的依赖关系有以下几种:

scope 说明 示例
compile 编译时需要用到该jar包(默认) commons-logging
test 编译Test时需要用到该jar包 junit
runntime 编译时不需要,但运行时需要 log4j
provided 编译时需要用到,但运行时有JDK或某个服务器提供 servlet-api

maven从何处下载所需的依赖:
maven维护了一个*仓库
第三方库将自身上传值*仓库
maven从*仓库把所需依赖下载到本地
maven会自动缓存已下载过的jar包(~/.m2/repository)

总结

  • maven通过解析依赖关系确定项目所需的jar包
  • 常用的4中scope:compile(默认)、test、runtime、provided
  • maven从*仓库下载所需jar包并缓存在本地
  • 可以通过镜像加速下载
上一篇:空间六点标定法 ——湖南Zeta


下一篇:纵行科技携手意法半导体推ZETA/LoRa双模智能路由,加速LPWAN 2.0泛在物联布局!