首页 > 其他分享 >Maven中的scope总结

Maven中的scope总结

时间:2022-08-15 18:04:27浏览次数:86  
标签:总结 依赖 boot jar Maven pom spring scope

参考博客:(10条消息) Maven中的scope总结_野生开发者的博客-CSDN博客_maven scope

Maven中的scope主要有以下6种,接下来分别介绍下这几种scope:

1、compile
不声明scope元素的情况下的默认值;compile表示被依赖包需要参与当前项目的编译,包括后续的测试,运行周期也参与其中,是一个比较强的依赖;打包的时候通常需要包含进去。
2、provided
provided 类型的scope只会在项目的编译、测试阶段起作用;可以认为在目标容器中已经提供了这个依赖,无需在提供,但是在编写代码或者编译时可能会用到这个依赖;依赖不会被打入到项目jar包中。
说到provided,这里就要说到<dependency>下的子标签<optional> ,如果一个依赖的<optional> 设置为true,则该依赖在打包的时候不会被打进jar包,同时不会通过依赖传递传递到依赖该项目的工程;例如:x依赖B,B由依赖于A(x->B->A),则A中设置<optional> 为true的依赖不会被传递到x中。

这两者的区别在于:
1、<optional>为true 表示某个依赖可选,该依赖是否使用都不会影响服务运行;
2、provided的<scope>在目标容器中已经提供了这个依赖,无需在提供

3、runtime
runtime与compile比较相似,区别在于runtime 跳过了编译阶段,打包的时候通常需要包含进去。
4、test
在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,不会被打包到项目jar包中,同时如果项目A依赖于项目B,项目B中的test作用域下的依赖不会被继承。
5.system
表示使用本地系统路径下的jar包,需要和一个systemPath一起使用,如下:

<!--引用-->
<dependency>
<groupId>xxxx</groupId>
<artifactId>xxx</artifactId>
<systemPath>${basedir}/lib/xxxxx.jar</systemPath>
<scope>system</scope>
<version>1.4.12</version>
</dependency>

6.import
import 只能在pom文件的<dependencyManagement>中使用,从而引入其他的pom文件中引入依赖,如:在Spring boot 项目的POM文件中,我们可以通过在POM文件中继承 Spring-boot-starter-parent来引用Srping boot默认依赖的jar包,如下:

<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.BUILD-SNAPSHOT</version>
</parent>


但是,通过上面的parent继承的方法,只能继承一个 spring-boot-start-parent。实际开发中,用户很可能需要继承自己公司的标准parent配置,这个时候可以使用 scope=import 来实现多继承。代码如下:

<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.1.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>


通过上面方式,就可以获取spring-boot-dependencies.2.0.1.BUILD-SNAPSHOT.pom文件中dependencyManagement配置的jar包依赖。如果要继承多个,可以在dependencyManagement中添加,如:

<dependencyManagement>
<dependencies>
<!-- Override Spring Data release train provided by Spring Boot -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.1.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

标签:总结,依赖,boot,jar,Maven,pom,spring,scope
From: https://www.cnblogs.com/slhe/p/16589157.html

相关文章

  • docker总结
    在jenkins中创建pipeline,在配置中的流水线添加以下脚本   pipeline{    agentany    stages{        stage('buildtheimage'){      ......
  • Mac安装配置maven环境变量
    Mac安装配置maven环境变量首先要确保Java环境变量已经配置好1.下载maven包:下载链接:......
  • 数据库注入提权总结(四)
    OracleOracle权限分类权限是用户对一项功能的执行权力。在Oracle中,根据系统的管理方式不同,将Oracle权限分为系统权限与实体权限两类。系统权限是指是否被授权用户可以......
  • SpEL总结
    SpEL全称:SpringExpressionLanguage(Spring表达式语言)定义:SpEL是Spring定义的一套在Spring框架内运行的表达式语言,说是语言,理解为通过特定格式的字符串来让Spring......
  • 【博学谷学习记录】超强总结,用心分享 | nacos注册中心
    Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。1.服务注册到Nacos1)引入依赖在父工程的pom文件中的<dependencyM......
  • 原生js构造函数及其对象 学习总结
    js构造函数及其对象ES5functionPerson(age){ this.name='张三' this.age=age this.talk=function(){ alert('hello') }}首字母大写构造函数中的thi......
  • 20220505模拟赛总结(ABC237)
    总结初一第一,竞赛班第二还可以,为了照顾提高班来的四个同学放了四个水题,可惜他们做的不是很理想,希望他们下次可以获得满意的成绩这次做的其实是AtCoderABC237A.NotO......
  • 8.8~8.13总结
    8.9wave【题目描述】海浪分为前浪和后浪,分别用数字0和数字1表示。现在给定一天中n个时段的海浪序列,第i个序列包含$m_i$个海浪。全天海浪序列是n个时段的......
  • CMS垃圾收集器总结
    CMS:1. 初始标记  CMSinitialmark:         标记GCRoots直接关联对象,不用Tracing,速度很快2. 并发标记  CMSconcurrentmark    ......
  • 实时数据仓库==(总结)
    实时数据仓库(总结)1.开源实时数仓和离线数仓的区别API计算引擎离线数据仓库主要使用hivesql和sparksql进行开发实时数据仓库主要是使用flinksql开发数据存储......