IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> maven scope -> 正文阅读

[Java知识库]maven scope

scope作用:决定?dependency 的jar的作用范围。即控制 Jar 包在哪些周期被加载和使用。

项目周期:编译、测试、打包、运行。

编译和运行也可分为:测试代码的编译和运行、非测试代码的编译和运行。一般情况下,编译和运行是指非测试代码的编译和运行,测试是指测试代码的编译和运行。

打包:一般情况下,指的是mvn package且打包格式是war之类(附带依赖包的),非默认的jar。

scope取值:compile、test、runtime、provided、system、import。

scope默认值:compile。

compile

什么都不配置,默认值compile。

作用范围:编译、测试、打包、运行。

依赖传递:会传递到依赖的上层项目中。

test

作用范围:测试。

依赖传递:不会传递依赖。

runtime

作用范围:测试、打包、运行。

依赖传递:会传递。

provided

作用范围:编译、测试。

依赖传递:不会传递依赖。

provided意味着打包的时候不会包进去,在打包阶段做了exclude的动作,别的容器(Web Container)会提供。

system

不推荐使用。也provided类似,但是maven不会在repository查找,而是从本地文件系统拿,一定要配合systemPath属性使用。

import(Maven 2.0.9 之后新增)

import只使用在<dependencyManagement>中,表示从其它的pom中导入dependency的配置。用处:非继承的方式依赖多个模块。

继承引入依赖:<parent> 只能声明一个,Maven的继承和Java的继承一样,是无法实现多重继承的

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.6</version>
    </parent>

非继承引入依赖:可引入多个模块依赖

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.yzh</groupId>
            <artifactid>test-parent1</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.yzh</groupId>
            <artifactid>test-parent2</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

依赖范围总结

scope的依赖传递

A–>B–>C。A依赖于B,B依赖于C。A和C的依赖关系:
当C的scope是test或者provided时,C直接被丢弃,A不依赖C;
否则A依赖C,C的scope继承自B的scope,即B的scope是什么,C在A中的scope就是什么。

一张依赖传递图(感觉直接依赖compile和间接依赖runtime的结果不太对):

依赖传递时scope的计算

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:07:52  更:2022-07-17 16:11:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:20:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码