Maven的依赖关系

0.> 依赖的作用域:

         scope=test: 测试时会使用,编译和打包时不会使用;

         scope=compile: 编译和打包时都会使用==》默认;

         scope=provided:编译和测试时会使用,打包时不会使用,如servlet-api.jar包, 因为在tomcat等中间件中已经存在该包,如果打包时打入该包,则包在服务器运行时会出错;

         scope=runtime:运行和测试时依赖,比如说连接mysql或oracle数据库的jar包;

         scope=system:与provided类似,但须显式的提供一个本地系统的JAR文件路径。Maven不会在仓库中去寻找这些jar包(不推荐使用,建议尽量去Maven仓库中引用依赖)。
        示例如下:
        <project>
          <dependencies>
            <dependency>
                <groupId>sun.jdk</groupId>
                <artifactId>tools</artifactId>
                <version>1.5.0</version>
                <scope>system</scope>
                <systemPath>${java.home}/../lib/tools.jar</systemPath>
            </dependency>
            ...
          </dependencies>
        </project>

        scope=import:仅支持在<dependencyManagement>中的类型依赖项上。它表示要在指定的<dependencyManagement>部分中用有效的依赖关系列表替换的依赖关系。通过非继承的方式来引入这段依赖管理配置。该scope类型的依赖项不会参与限制依赖项的可传递性。

1.> 包依赖会传递,但scope=test不会传递;

2.> 包依赖时的规则: 

        2.1> 当两个包的引用级别一样时,比如说C依赖D1.0,B依赖D1.1,A依赖B且A依赖C, 此时,在A中dependency先定义A依赖B,则引用D1.1,否则引用D1.0;

        2.2> 当两个包的引用级别不一样时, 则引用级别短的那个包, 如 C依赖D1.0,B依赖D1.1,A依赖B且A依赖D1.2, 则引用D1.2;

        2.3> <optional>true</optional>,依赖不传递:projectA 依赖projectB,  projectB 依赖projectC,当projectB的<optional>true</optional>时, projectA中如果没有显式的引入projectC, 则projectA不依赖projectC, 即projectA可以自己选择是否依赖projectC。默认<optional>的值为false。

3.> 使用Maven管理jar时,如果出现依赖,可以使用 exclusions 来排除依赖:

         

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值