Maven - 依赖

Maven依赖是何物,IDEA怎么配置Maven依赖,Maven依赖怎么操作 4. Maven中管理依赖 4.1 介绍 依赖是一个项目运行时所需要的各种资源文件的配置信息,如版本号,群组等信息 4.2 配置格式 一般是在Maven构建项目中的pom.xml文件中来进行配置,主要格式如下: <!--所有的依赖都配置在这对dependencies标签中间--> <dependencies> <!--一对dependency标签就是一组具体依赖--> <dependency> <!--以下3种标签就是依赖的坐标--> <gr 阅读详情
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.x</groupId>
	<artifactId>helloworld</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>helloworld Maven Webapp</name>
	
	<properties>
		<spring>3.0.5.RELEASE</spring>
	</properties>
	
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring}</version>
		</dependency>
	</dependencies>
</project>

dependencies节点可以包含一个或多个dependency元素,以声明一个或多个项目依赖。

每个依赖可以包含的元素有:
groupId,artifactId和version:依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,maven根据坐标才能找到需要的依赖。
type:依赖的类型,对于项目坐标定义的packaging,默认值为jar。
scope:依赖范围。
optional:标记依赖是否可选。
exclusions:用来排除传递性依赖

------------------------------------------------------------------------------------------------------------------------

 *scope依赖范围

maven在编译项目主代码的时候需要使用一套classpath。假如,在编译项目主代码的时候需要用到spring-core,该文件以依赖的方式被引入到classpath中。其次,maven在编译和执行测试代码的时候会使用另外一套classpath。如:JUnit就是一个很好的例子,该文件也以依赖的方式引入到测试使用的classpath中,不同的是这里的依赖范围是test。最后,实际运行maven项目的时候,又会使用一套classpath。

依赖范围就是用来控制依赖与这三种classpath(编译classpath,测试classpath,运行classpath)的关系,maven有以下几种依赖范围:

1.compile :编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的maven依赖,对于编译、测试、运行三种classpath都有效。典型的例子如项目依赖spring。

2.test :测试依赖范围。使用此依赖范围的maven依赖,只对于测试classpath有效,在编译主代码或者运行项目时将无法使用此类依赖。典型的例子是:JUnit,它只有在编译测试代码及运行测试的时候才需要。

3.provided :  已提供依赖范围。使用此依赖范围的maven依赖,对于编译和测试classpath有效,但在运行时无效。典型的例子是:servlet-api,编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容器已经提供,就不需要maven重复地引入一遍。

4.runtime:运行时依赖范围。使用此依赖范围的maven依赖,对于测试和运行classpath有效,但在编译主代码时无效。典型的例子是JDBC驱动实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体JDBC驱动。

5.system: 系统依赖范围。该依赖与三种classpath的关系,和provided依赖范围完全一致。但是,使用system范围的依赖时必须通过systemPath元素显式地指定依赖文件的路径。

<dependency>  
    <groupId>javax.sql</groupId>  
    <artifactId>jdbc-stdext</artifactId>  
    <version>2.0</version>  
    <scope>system</scope>  
    <systemPath>${java.home}/lib/rt.jar</systemPath>  
</dependency>  

 

6.import:导入依赖范围。在依赖dependencyManagement下使用,作用是将目标的pom中dependencyManagement导入合并到当前pom的dependencyManagement元素中。

依赖范围与classpath的关系

依赖范围(scope)

编译classpath有效

测试classpath有效

运行classpath有效

例      子

compile

Y

Y

Y

spring jar

test

----

Y

----

junit jar

provided

Y

Y

----

jsp-api

runtime

----

Y

Y

jdbc驱动实现

system

Y

Y

----

本地,maven仓库之外的类文件

 

 *传递性依赖

   如:有A项目中,依赖spring [B], 而spring又依赖commons-logging [C].    C就是A的一个传递性依赖。

            A ----> B依赖范围:compile  第一直接依赖 , 

            B----> C依赖范围:compile  第二直接依赖, 

            A----> C 传递性依赖范围是:compile.

 依赖范围影响传递性依赖

   最左边一列表示第一直接依赖范围, 最上面一行表示第二直接依赖范围, 中间交叉单元格则表示传递性依赖范围:

 

compile

test

provided

runtime

compile

compile

----

----

runtime

test

test

----

----

test

provided

provided

----

provided

provided

runtime

runtime

----

 

runtime

           

 

org.apache.xmlbeans jar包 java开发中操作excle的jar包,功能齐全,很强大,非常实用。 立即下载

相关推荐

微磁模拟实战指南:从OOMMF安装到首个3D模型运行

本文详细介绍了OOMMF微磁模拟软件的安装与使用,从环境配置到首个3D模型运行的完整教程。涵盖Windows、Linux和macOS平台的安装避坑指南,以及MIF文件编写、并行计算优化等实战技巧,帮助研究人员快速掌握这一开源工具在磁畴壁运动、磁滞回线等微磁学问题中的应用。

weixin_29294597的博客 153

常用maven依赖和各种xml配置

待到秋来九月八,我花开后百花杀JavaWeb的Servlet编程依赖JDK编译版本依赖 JavaWeb的Servlet编程依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ma

qq_40893595的博客 646

总结所有的池化(Pooling)方法

为什么池化? 池化(Pooling)层和卷积层、全连接层一样,都是卷积神经网络的组成部分。 卷积神经网络中的卷积层会将卷积Filter应用于输入图像,以便创建特征映射来总结输入中这些特征的存在。 卷积层被证明是非常有效的,在深层模型中叠加卷积层可以让接近输入的层学习低层特征(如线条),在模型中更深(高)的层用于学习高阶或者更抽象的特征,如形状或特定对象。 卷积层特征映射输入的一个局限性是它们只能精确记录特征在输入层的位置。这意味着在输入图像中特征位置的小幅移动将导致不同的特征映射。这可以随着重新裁剪

大脸猫的博客 1万+

Java如何使用XMLBeans实现XML和Java对象的相互转换

2. 创建XML Schema文件(XSD文件),用于定义XML结构和验证XML文档。4. 在Java代码中,使用XMLBeans API读取和操作XML文档。3. 使用XMLBeans命令行工具(xmlbeans-3.1.0.jar)将XSD文件编译为Java类文件。以上命令将生成名为"PersonDocument.java"和"PersonType.java"的Java类文件。注意:在实际使用中,应根据自己的XML结构和需要进行相关的代码调整。// 从XML文件中加载XML文档。

xiaocxyczh的博客 1713

ADS学习笔记 2. 低噪声放大器设计

ADS学习笔记 2. 低噪声放大器设计。设计了一个中心频率433MHz,增益18.206dB,NF=0.134dB,S11带宽较好的低噪声放大器

u014087103的博客 9508

9.9元ESP32-C3开发板实战:手把手教你用VSCode搭建RT-Thread最小系统(附避坑指南)

本文提供了一份详尽的实战指南,教你如何在售价仅9.9元的ESP32-C3开发板上,使用VSCode搭建RT-Thread最小系统。内容涵盖从ESP-IDF环境配置、BSP源码获取、内核补丁应用到编译下载与调试的全流程,并重点分享了版本选择、补丁应用等关键避坑技巧,旨在帮助开发者低成本、高效地启动嵌入式实时操作系统开发。

o4p5q6r7s的博客 226

错误:java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException

错误:java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException

laterstage的博客 4512

手把手教你ensp仿真搭建校园网(含防火墙及无线网络)系列(一)校园网核心交换机配置

本系列博客将带你从零开始,使用 华为 eNSP(Enterprise Network Simulation Platform) 仿真搭建一个完整的校园网络,涵盖 核心层、汇聚层、接入层、防火墙安全策略、无线AC+AP组网 等实战场景。无论你是网络初学者还是希望深化实战经验的工程师,都能通过本教程掌握企业级网络的规划、配置与排错技巧。

echo的博客 3797

2021-10-26

POI 4.x版本新建Workbook 报错org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorgapachexmlbea… 异常中写的比较清晰,org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit方法找不到,但是项目时maven项目,不应该缺少依赖,查看xmlbeans发现XmlOptions class中的确没有setEntityExpansionLimit方法,估计是版本不匹配(

weixin_44305716的博客 2292

ArcGIS Pro符号化教程

本文详细介绍了ArcGIS Pro的软件设置和符号化操作步骤。主要包括:1)设置默认工程目录和关闭地图自动加载;2)创建新工程的基本流程;3)点要素的单一符号化方法,包括样式修改和图层调整;4)图表符号显示过滤器的使用,涉及字段添加、图表类型选择和背景设置。文章还提供了操作截图和数据下载链接,适合GIS初学者学习ArcGIS Pro的基础符号化操作。

WwLK123的博客 549

Vue3 - 详细实现安装西瓜视频 xgplayer 插件详细配置及使用教程,利用西瓜视频播放器播放 mp4、flv、hls 格式视频文件及视频推流(直播或监控摄像头画面),支持移动端H5及PC网站!

vue3,nuxt3,西瓜视频,xgplayer,插件组件,xgplayer-hls,xgplayer-flv,xgplayer-mp4,播放视频点播和直播视频流,监控实时播放推流,倍速播放,在线flv在线推流地址,HLS播放,vue3西瓜播放器,vue如何使用西瓜视频插件做直播推流回流,视频点播,flv在线视频流播放,截图功能,自定义播放器样式,截屏,监控视频,vue3使用西瓜播放器播放flv、hls、mp4视频,截屏按钮,直播流,报错,黑屏,加载失败,苹果ios不兼容,重连,怎么改样式,很卡,详细教程,

🏆 前端领域优质创作者 1万+

Maven依赖详解

一、依赖 依赖是Maven 中最关键的部分,我们之所以在工程中使用Maven,就是因为它的依赖管理功能。如果我们想要在工程中引入某个jar 包,只需要在pom.xml 中引入其jar 包的坐标即可。比如引入log4j 的依赖: &amp;lt;dependencies&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;log4j...

点滴记录 2万+

RISC-V CPU设计(三)---多周期CPU的设计与实现

基本情况 本多周期CPU支持RV32I指令集(fence,ecall,ebreak除外),已通过部分指令的测试,如代码有bug,欢迎指出。 模块划分 代码将CPU划分为以下几个模块: 1.控制单元:ControlUnit 用于产生控制信号,是CPU的大脑,指挥中枢。 2.分支决策单元:BranchUnit 用于决定B型指令是否发生跳转 3.立即数单元:ImmUnit 用于从指令中解析出立即数. 4.寄存器堆:RegisterFile RISC-V的32个寄存器,其中x0寄存器恒为0,不可更改。 5.指令存储

qq_40268672的博客 5542

maven依赖总结

1.依赖元素 org.springframework spring-core ${springframework.version} jar compile groupId,必选,实际隶属项目artifactId,必选,其中的模块version必选,版本号type可选,依赖类型,默认jarscope可选,依赖范围,默认compileoptional可

独自登高楼 望断天涯路 3万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Maven的依赖

这里写目录标题一. Maven依赖概念1. 依赖的基本配置2. scope:依赖范围配置3. 依赖范围4. 传递性依赖 一. Maven依赖概念 1. 依赖的基本配置 根元素(project)下的dependencies可以包含dependence元素,以声明多个依赖。 每个依赖都包含: 依赖类型 Type:默认为jar 2. scope:依赖范围配置 compile:编译依赖范围 如果没有指定,就会默认使用该依赖范围,使用次依赖范围的maven依赖,对编译,测试,运行三种classpath都有效.

YJiaLiang的博客 3323

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Maven中的依赖

如在web开发时,只有在编译和测试时才用到servlet-api,将其设置为此范围,在运行时servlet-api由web容器提供,无须依赖。POM( Project Object Model,项目对象模型 ) 定义了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。对于更大的项目,我们可能需要创建自己的库并在不同的部分使用它的项目。保持项目最新的库JAR文件的正确版本不是一个容易的任务。默认使用此依赖范围,其下的maven依赖,对于编译,测试,运行classpath都有效。典型例子如junit。

qq_63964907的博客 1175

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Maven依赖详细理解

Maven依赖理解1 简介2 依赖的配置3 依赖的范围4 传递性依赖4.1 传递性依赖和依赖调解5 依赖调解6 可选依赖7 总结 1 简介  在Maven项目中,有一个核心文件pom.xml。POM项目对象模型定义了项目的基本信息,用于描述心目如何构建,声明项目依赖。  没有任何的实际Java代码,我们就能顶一个Maven项目的POM,这体现了Maven的一大优点,它能让项目对象模型最大程度地与实...

不当初 1万+

Maven 依赖范围及依赖原则

1.依赖范围 想必大家在maven的pom.xml文件中 定义依赖 除了 groupId ,artifactId,version三个必要的标签外,还见过 另外一个标签scope(如下)。没错这个标签就是我下面要说的依赖范围。 &amp;lt;dependencies&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;junit&amp;l

只会一点Java 7325

Maven依赖传递

Maven 依赖传递是 Maven 的核心机制之一,它能够一定程度上简化 Maven 的依赖配置。

逍遥人世欢 1485

mysql maven 依赖关系_Maven依赖总结

一:依赖范围Maven在编译项目主代码的时候需要使用一套classpath。其次,在编译和执行测试的时候会使用另外一套classpath。最后,实际运行Maven项目的时候,又会使用一套classpath。所谓的依赖范围就是用来控制依赖与这三种classpath(编译、测试、运行)的关系,Maven有以下几种依赖范围:compile:编译依赖范围。如果没有指定,默认使用该依赖范围。使用此依赖范围时...

weixin_33365244的博客 4631

maven 依赖树

在 idea 中可视化利用 maven 依赖树解决冲突。命令解析、过滤、保存依赖树。

灰色童话 7820

maven排除依赖包的子依赖_四、Maven 依赖管理

1. 前言在我们创建使用 Maven 项目的过程中,当需要用到第三方的控件时,都是通过依赖管理来达成,也就是 Maven 项目中必有的 pom.xml 文件。POM(Project Object Model),即 项目对象模型,其中定义了 Maven 项目的形式。因此,pom.xml 可以看做是 Maven 项目中的导航。2. Maven 坐标一个坐标的组成一般有如下几部分,前三者必须,packa...

weixin_39625782的博客 1万+

maven 打包指定依赖包_maven 打包包含依赖

Maven打包,包含第三方依赖失败目标 1. 将依赖第三方jar包都打进去2. 将工程java 目录下所有文件夹和配置文件,包括资源文件都打入jar包,根据目录来3. 打出jar文件可直接运行方法:采用 maven-assembly-plugin环境:IDEA 14.1.5 JDK 1.8其中**/*写法,是为了保证各级子目录下的资源文件被打包,svn相关文件排除。pom.xml 写法src/ma...

weixin_29442195的博客 3494

Maven 直接依赖、间接依赖、依赖冲突、依赖仲裁

Maven 直接依赖、间接依赖、依赖冲突、依赖仲裁

学习笔记! 1217
上一篇: Maven - 坐标
下一篇: 扩展CXF, 支持LoadBalance负载均衡
胸口碎大石_
博客等级 码龄17年 1154粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值