Maven依赖

依赖传递

第一列表示第一直接依赖,第一行表示第二直接依赖。传递依赖的范围一般和第一直接依赖一致,compile是一个例外。

 compiletestprovidedruntime
compilecompile--runtime
testtest--test
providedprovided-providedprovided
runtimeruntime--runtime

 

依赖调解

第一原则-路径最近者优先

    A-B-C-Y    A-D-Y

    Y就是A的传递依赖。这个时候按照路径最短的那个获取,即拿到的是第二个Y。

第二原则-声明最先者优先

    A-B-Y    A-D-Y

    两个Y的路径一样,这时候比较B和D的声明顺序,B在前则取第一个Y,D在前取第二个。

 

可选依赖

    A-B    B-X(可选)    B-Y(可选)

    X、Y为A的传递依赖,X、Y为可选依赖,所以不再向下传递。X、Y对A不产生直接影响,A使用B的过程中要显示声明X或者Y。

<optional>true</optional>

    可选依赖并不推荐,正常的做法是分别存在包含X组件版本的B和包含Y组件版本的B。

 

排除依赖

    A-B-Y(?)

    Y为A的传递依赖,会被项目隐性引入,但是由于版权原因,或者版本稳定性原因等需要排除原有的Y,然后在A中声明另外的已知Y。

<exclusions>
    <exclusion>//只需要两个子元素
        <groupId>org.iSkyCode</groupId>
        <artifactId>excJar</artifactId>
    </exclusion>
</exclusions>

 

归类依赖

    动态化设定,将依赖分类。如版本号,在更新的时候就可以把它的相关依赖全部升级。

<properties>
    <junit.version>3.8.1</junit.version>
</properties>
    
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
    </dependency>
</dependencies>

 

 

转载于:https://my.oschina.net/varusyan/blog/856590

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值