栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

maven scope

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

    
        org.springframework.boot
        spring-boot-starter-parent
        2.4.6
    

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


    
        
            com.yzh
            test-parent1
            1.0.0-SNAPSHOT
            pom
            import
        
        
            com.yzh
            test-parent2
            1.0.0-SNAPSHOT
            pom
            import
        
    
依赖范围总结

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的结果不太对):

 

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016614.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号