[读书笔记]Maven主要概念:依赖

Maven通过依赖(dependency)来管理项目的依赖Jar包。一个典型的依赖如下:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
dependency包含groupId,artifactId,version,scope,type,optional,excusions元素,前四个元素比较容易理解。其它几个要素:
  • scope是为了对应构建时的三个classpath(编译,测试,运行)设置的。可选值包括:
    • test:表示只对测试代码有效,在主代码中引用该Jar会报错
    • compile:默认值:
    • provided:编译和测试时需要,运行时不需要
    • runtime:测试和运行有效,编译主代码时不需要,如JDBC驱动
    • system:范围和provided完全一致,不常用
    • import:使用Maven的继承机制时使用,不常用
  • optional:可选依赖。如某个项目实现了数据库操作,可以依赖mysql也可以依赖oracle,对mysql和oracle的jar包就可以配置为可选依赖。其它项目如果引用了该项目的jar包,将不自动加载可选依赖的jar包。
  • excusions:排除传递性依赖

依赖的重要概念:传递性依赖,直接依赖,间接依赖

项目中引入了Spring依赖(Spring称为项目的直接依赖),Spring又依赖了于其它项目(该项目称为该项目的间接依赖),在项目中只需要指定对Spring的依赖即可,Maven会根据Spring的POM自动加载间接依赖。

传递性依赖需要明确的问题

可选依赖:如果某个间接依赖为可选的,不会加载它。

项目对某给项目既是直接依赖,也有间接依赖,为了防止混乱,可以关闭某个间接依赖( 通过dependency. excusions设置),然后在项目中声明对它的直接依赖。

依赖调节

有不同的两个直接依赖有相同的间接依赖,但版本不同时如何选择版本号:

  1. 依赖路径短的优先
  2. 依赖路径相同的情况下先声明的优先

查看项目依赖的几个有用命令

  • mvn dependency:list

查看项目的已解析依赖

  • mvn dependency:tree

查看项目的依赖树(直接依赖,间接依赖)

  • mvn dependency:analyze

显示项目依赖存在的问题:

    • Used undeclared dependencies(用到但没定义为显示依赖的项目):项目中直接用到了该依赖,但使用间接依赖来引入Jar包。可能存在版本不一致的风险。
    • Unused declared dependencies(没用到但定义为显示依赖的项目):代码中虽然没有显示地声明会用到该Jar包(如通过import地方式),但测试或运行时会用到如mysql驱动包,所以该报告需要谨慎分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值