Maven精选系列--依赖范围、传递、排除

转载自 Maven精选系列--依赖范围、传递、排除

添加依赖


下面我添加了一个spring-web的依赖,maven就会去下载spring-web的jar包及它依赖的一些jar包。


<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>4.2.5.RELEASE</version>

<scope>compile</scope>

</dependency>

</dependencies>


依赖范围


依赖配置中有一个scope之前没讲过,它就是依赖范围。什么是依赖范围就是指定你这个jar包在哪个阶段时才有效。


  • compile - 编译依赖范围。默认的范围,可以不填,表示在所有过程中都有效,如编译期、测试过程中、运行期间等。


  • provided - 已提供依赖范围。这个范围表示只提供编译和测试阶段有效,运行期间不需要,像tomcat等容器本身已经提供的servlet-api等。


  • runtime - 运行时依赖范围。这个范围表示只有在运行和测试期间才有效,编译期间不需要,像连接数据库的jdbc驱动程序等。


  • test - 测试依赖范围。这个范围只有测试阶段有效,编译和运行不需要,像单元测试提供的junit包。


  • system - 系统依赖范围。这个范围表示不依赖本地仓库,jar在其他的目录,需要通过systemPath指定路径,这个不建议使用。


  • import - 引用依赖范围。Maven2.0.9之后新增的范围,只能用在<dependencyManagement>中,并且导入的type为pom类型的父工程配置,一般用来解决多继承问题。


依赖传递


依赖的传递前面讲过通过继承和聚合的方式可以达到,通过继承的方式可以轻松的从父项目继承过来,通过聚合的方式也可以间接的传递过来。


继承:A继承B,A就可以继承B的dependencies依赖。

聚合:A依赖C,C依赖D,那么A就要依赖D自然也就获取了D的依赖。


下面这是dubbo的直接依赖和所有间接依赖的关系列表。



依赖排除


在依赖传递过程中,如A依赖B、S2.0,B依赖C、S1.0,这样A就有了S1.0和S2.0两个依赖,这样某些情况下会造成冲突需要手动把B间接传递过来的依赖排除掉,就是不依赖B带过来的S1.0的包。


<dependency>

<groupId>org.testgroupId>

<artifactId>B</artifactId>

<version>1.0</version>

<exclusions>

<exclusion>

<groupId>com.test</groupId>

<artifactId>S</artifactId>

</exclusion>

</exclusions>

</dependency>


排除所有间接依赖


<dependency>

<groupId>org.testgroupId>

<artifactId>B</artifactId>

<version>1.0</version>

<exclusions>

<exclusion>

<groupId>*</groupId>

<artifactId>*</artifactId>

</exclusion>

</exclusions>

</dependency>


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互联网的基本概念

现在大家都在使用互联网&#xff0c;但是它的概念你们大概不知道吧&#xff0c;下面我就大概说一下互联网的基本概念。 互联网指Internet,起源于美国&#xff0c;现已发展成为世界上最大的&#xff0c;覆盖全球的计算机网络。计算机网络&#xff08;简称为网络&#xff09;&…

Maven精选系列--继承与聚合

转载自 Maven精选系列--继承与聚合继承什么是继承&#xff0c;我们可以定义项目的父类项目&#xff0c;用于继承父项目的依赖、插件、属性等信息。<parent> <groupId>com.alibaba</groupId> <artifactId>dubbo-parent</artifactId> <version&…

互联网的运输层

上次我们大概的说了一下互联网的基本概念&#xff0c;这次我们来说一下互联网的运输层吧。 运输层就是两个主机之间的传输服务&#xff0c;从通信和信息处理得角度看&#xff0c;运输层向它上面的应用层提供通信服务&#xff0c;它属于面向通信部分的最高层&#xff0c;同时也是…

jvm MinorGC和查看GC日志

【代码】 public class Page93 {private static final int _1MB 1024 * 1024;public static void main(String[] args) {minorGC(); }/*** vm params: -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:PrintGCDetails -XX:SurvivorRatio8*/private static void minorGC() {byte[] a…

Maven精选系列--过滤不同环境配置文件

转载自 Maven精选系列--过滤不同环境配置文件 背景介绍 项目有开发、测试、生产至少有这三个环境&#xff0c;所需要的配置信息肯定不一样&#xff0c;所以打包的时候可以指定使用哪一个配置文件。 如测试环境使用&#xff1a;mvn package -P test&#xff0c;这时候的${env}的…

jvm内存分配与收回策略

【README】基础知识 1、 Minor GC/新生代GC&#xff1a;指发生在新生代的垃圾收集动作&#xff0c;因为java对象大多都具备朝生夕灭的特性&#xff0c;所以minor gc比较频繁&#xff0c;一般回收速度也比较快&#xff1b; 2、 Major GC/Full GC/老年代GC&#xff1a;发生…

Java递归

无论在哪里相信大家都听说过递归&#xff0c;我也是个初学者&#xff0c;一开始我也是看不懂的&#xff0c;后来才慢慢看懂&#xff0c;现在我就来记录一下我所了解的Java递归是什么。 递归&#xff1a;程序调用自身的编程技巧称为递归&#xff08;recursion&#xff09;&#…

Maven精选系列--常用命令详情

转载自 Maven精选系列--常用命令详情 常用命令 mvn –version mvn -v 显示maven安装版本信息 mvn clean 清理项目打包文件&#xff0c;即项目下的target目录 mvn compile 编译项目下的src/main/Java目录源代码 mvn package 项目打包&#xff0c;在项目target目录下生成编译后的…

2020-10-24

1024徽章 嘤嘤嘤&#xff0c;我TM直接白嫖!

jvm高级特性第4章-虚拟机性能监控与故障处理工具

【4.2】jdk命令行工具 1、jps&#xff1a;虚拟机进程状况工具&#xff1b; C:\Users\pacoson>jps -l // 输出主类名称 12272 sun.tools.jps.Jps 12736 chapter3.Page93 2808C:\Users\pacoson>jps -v // 查看虚拟机进程启动时的参数 12736 Page93 -verbose:gc -Xms20M -…

JSP引入CSS文件无法生效的问题

JSP引入CSS文件无法生效的问题 开发工具与关键技术&#xff1a;eclipse、Java 作者&#xff1a;幻奏 撰写时间&#xff1a;2020.8.8不知道你们有没有碰到这个问题&#xff0c;就是css文件在jsp中无法生效&#xff0c;看解决办法的可以直接看下下面&#xff0c;前面只是我碰到…

Maven精选系列--classifier元素妙用

转载自 Maven精选系列--classifier元素妙用 先来看这么一个依赖 <dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version> </dependency> 看似没问题吧&#xff1f;你觉得能…

IDEA创建Spring配置文件Spring Config的方法

作为刚刚开始学Spring框架的小白&#xff0c;而且我也是刚刚学怎么用idea&#xff0c;不会简单的操作也是很正常的是吧。这个问题其实只是我傻傻的不懂&#xff0c;是个很简单的问题&#xff0c;我现在把它记录下来。 在idea创建maven项目后&#xff0c;我们在左边右键新建xml文…

Maven精选系列--POM文件解析

转载自 Maven精选系列--POM文件解析 之前有介绍到maven的标准目录结构&#xff0c;也看到了maven的核心配置文件pom.xml文件&#xff0c;今天就解析这个配置文件。 maven工程的核心文件就是这个pom文件了&#xff0c;每个工程在创建的时候都会有一个pom.xml配置文件&#xff0c…

JVM参数设置、分析(转)

转自&#xff1a;http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数&#xff0c;可以极大的减少由于GC工作&#xff0c;而导致的程序运行中断方面的问题&a…

如何下载、配置IDEA的Maven

我们每个项目都会用到jar包&#xff0c;而maven就是我们经常使用到的一个jar包的管理工具&#xff0c;下面我就来说说maven是如何配置在我们的电脑上的。 第一步当然是在官网下载maven啦&#xff0c;下面是官网的连接 http://maven.apache.org/download.cgi 下载好了就解压在…

Maven精选系列--eclipse各种操作

转载自 Maven精选系列--eclipse各种操作 在eclipse中配置maven的安装目录&#xff0c;使用最新的maven插件&#xff0c;从安装列表中可以看到eclipse自带绑定的是3.3.9&#xff0c;不是最新的&#xff0c;我们勾选自己的最新的。 在eclipse中设置maven的配置文件settings.xml路…

win7-elasticsearch环境搭建

【写在前面】 &#xff08;模拟&#xff09;es客户端共有4种&#xff1a; 1、postman&#xff1b; 2、kibana&#xff1b; 3、curl&#xff1b; 4、api&#xff0c; 如java api&#xff1b; 【1】下载elasticsearch windows version 和 kibana window version https://w…

IDEA中配置mybatis

之前我们用maven创建了项目&#xff0c;接着我来写下怎么在idea中配置mybatis。 第一步我们先把mybatis、sql驱动的依赖先导进去&#xff0c;接着在&#xff0c;main文件夹下面新建一个resources文件夹&#xff0c;再到下面新建一个mybatis.xml文件作为mybatis的主配置文件。 …