Maven之Scope详解

在依赖目录里我们常常看到scope的参数,今天就一起来看看这几个参数具体有什么作用。

  • runtime:标注为Runtime的依赖,表示不参与项目的编译过程,只参与项目编译完成后的运行过程,比较典型的例子便是JDBC,它与整个源码的逻辑无关,只是在运行时参与。
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.6</version>
    <scope>runtime</scope>
</dependency>
  • compile:当我们没有指定scope时,系统默认的便是compile,这意味着该依赖将参与整个项目的编译,运行过程,是比较强的依赖。
<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
</dependency>
  • provided:标明该文字的依赖意味着,该依赖需要由部署的容器或者JDK来提供。比较好的例子便是web应用部署在服务器上时,服务器本身就有所需的依赖库。provided只适用于编译期和测试期,运行期不需要,并且不是transitive的,这个单词存疑。比如部署到web服务器上,这个依赖只需要参与编译期和测试期,具体运行期服务器自己会提供相关的库。典型的便是servlet。
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>
  • test:标注为test的依赖,只能在运行期间使用,而且仅仅是用于测试,仅适用于执行期间的类路径,不是transitive。
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
  • system:该标注其实跟provided很像,他们之间最主要的区别便是标注system的是从系统本地引入jar包。所以这里需要注意的是不同机器中的jar包路径的不同。
<dependency>
    <groupId>com.baeldung</groupId>
    <artifactId>custom-dependency</artifactId>
    <version>1.3.2</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/custom-dependency-1.3.2.jar</systemPath>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值