Maven依赖的作用域

Maven的依赖

使用Maven构建项目的时候,需要在pom文件中添加项目所需要的依赖,即第三方jar包,添加依赖时可以根据需求指定作用域,下面就来详细讲解下Maven依赖作用域的不同。

依赖配置

<dependency>
	<groupId></groupId>
	<artifactId></artifactId>
	<version></version>
	<type></type>
	<scope></scope>
	<optional></optional>
	<exclusions>
		<exclusion>
			<groupId></groupId>
			<artifactId></artifactId>
		</exclusion>
	</exclusions>
</dependency>
以上是在Pom文件中引入一个依赖的基本配置,其中scope标签就是控制此依赖的作用域。

依赖的作用域

Maven项目有三种ClassPath,分别为编译、测试、运行,scope标签就是控制项目引入的依赖对于这三种ClassPath的作用,以下对于三种ClassPath均用“阶段”进行表示。

  • compile
    当引入依赖,不指定scope标签的值时,此依赖的作用域默认为compile,当然也可以用scope标签指定该值。使用该依赖范围的maven依赖,在项目的编译、测试、运行阶段都会起作用,项目打包的时候也会被打包进去。
  • test
    该依赖范围的依赖,只对于项目的测试阶段起作用,包括测试代码的编译、运行,最典型的jar包如Junit。
  • provider
    该依赖范围作用于编译和测试阶段,但是运行时不需要,因为在运行期间有关容器已经提供了此jar包,比如servlet api。此依赖范围在项目打包的时候不会被打进去。
  • runtime
    该依赖范围作用于项目的运行和测试阶段,但是编译阶段不需要,比如jdbc的驱动包,在项目的编译阶段,代码中只需使用JDK提供的JDBC接口即可,在运行阶段才需要实现JDBC的具体驱动 。
  • import
    该依赖用于导入dependency管理,通常在标签中使用,进行统一的jar包版本管理。
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-dependencies</artifactId>
           <version>2.1.13.RELEASE</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>
  • system
    该依赖范围与provider相似,作用于编译和测试阶段,但是运行时不需要,但是必须显示的提供一个位于本地磁盘上的jar包路径。
<dependencies>
    <dependency>
        <groupId>org.apache.commons</groupId>
		<artifactId>commons-lang3</artifactId>
		<version>3.7</version>
		<scope>system</scope>
		<systemPath>${basedir}/lib/commons-lang3.jar</systemPath>
    </dependency>
</dependencies>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值