maven dependency scope

看着官网文档结合自己的理解写了写。看官还请自行验证。

依赖scope用来限制依赖的传播,同时也会影响各种构建任务用到的classpath。
有6种可用的scope

  • compile
    这是默认的scope,添加依赖的时候不写scope,默认就是这个。scope为compile的时候,这个依赖在该项目的classpath都是可用的。此外,依赖该项目的其他项目也有这个依赖。
  • provided
    这个和compile很像。provided表明,你希望jdk或者容器(比如Tomcat)在运行时来提供这个依赖。所以scope 为provided的依赖只在编译和测试的时候可用,打包的时候会忽略这个依赖。
  • runtime
    runtime表明这个依赖不需要编译,就可以执行。这个依赖在runtime和test的classpath,并不在compile的classpath。
  • test
    test表明这个依赖并不在正常运行的时候使用。并且仅仅在测试编译和执行的时候使用。scope为test的依赖也不具有传递性。
  • system
    这个和provided比较相似。只不过需要自己手动提供依赖的jar包。scope为system的依赖。maven并不会帮你去maven仓库找。
  • import
    import只在 (type为pom的依赖)&&(该依赖在<dependencyManagement> 中)时有效。简单的理解就是把别的pom文件中的<dependencyManagement>中的内容引入到目前的<dependencyManagement>中。

每一种scope类型(除了import)都会以不同的方式影响依赖的传播性。
下面的表格我来解释一下。
最左边我们可以看做是子项目中某一个依赖的scope类型,最顶部的一行我们可以看做是主项目依赖子项目时的scope类型。然后左边和顶部交叉的地方表示在这两种scope类型的作用下,子项目中的依赖在主项目中的传递结果。

compileprovidedruntimetest
compilecompile(*)-runtime-
providedprovided-provided-
runtimeruntime-runtime-
testtest-test-
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值