Maven依赖范围

介绍:

管理依赖关系是Maven的核心功能。 在定义Maven依赖项时, scope属性定义了该依赖项在不同的Maven生命周期阶段(例如build,testrun)上的可见性。

依赖范围限制了任何项目中依赖的传递性,从而影响了类路径。 另外,Maven中有六个不同的可用依赖范围。 在本教程中,我们将学习它们中的每一个。

传递依存关系:

Maven中的依赖可以是直接的也可以是传递的

直接依赖关系是我们明确定义POM文件的依赖关系:

<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>

另一方面, 传递依赖是直接依赖所要求的。 所需的传递依赖项自动包含在我们的maven项目类路径中。

关键条款:

在深入学习可用的Maven范围之前,让我们首先使用一些关键术语来刷新我们的知识,

  • compile-classpath :对我们项目的主要源文件有依赖关系
  • test-classpath:保存测试编译和执行期间存在的依赖项
  • runtime-classpath :在运行时环境及其执行中将可用的依赖项

依赖范围:

现在让我们看一下不同的Maven依赖范围:

除非另有说明,否则它是Maven中默认范围 。 对于主要的源代码编译,我们需要这些依赖项 同样,我们上面讨论的所有三个类路径中都提供了编译依赖项。

这些依赖关系是可传递的,因此传播到依赖项目。

<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>

范围设置为test的依赖项仅在test-classpath中可用。 我们只需要这些依赖关系来编译和运行单元测试用例。 而且,它不是可传递的。

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version>
</dependency>

我们不需要运行时依赖来进行代码编译,但是非常需要它来在运行时执行代码 。 这种依赖关系在编译类路径中不可用,但在测试类路径运行时类路径中都存在。

一个很好的例子是JDBC驱动程序的依赖关系:

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.13</version><scope>runtime</scope>
</dependency>

它是可传递的。 因此,项目包装包括所有传递依赖项。

提供的依赖项仅在compile-classpathtest-classpath中可用 。 假定运行时环境(如JDK ,Web或Servlet容器等)将在部署模式下提供依赖的JARS

<dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope>
</dependency>

它本质上不是可传递的。 因此,打包后,我们将无法在我们的lib文件夹中找到此范围的直接传递依赖项。

系统范围提供的范围非常相似。 在这里,唯一的区别是它是指本地系统中某个路径的依赖jar

<dependency><groupId>com.programmergirl</groupId><artifactId>my-dependency</artifactId><version>2.5.1</version><scope>system</scope><systemPath>${project.basedir}/libs/my-dependency-2.5.1.jar</systemPath>
</dependency>

使用此范围的一个缺点是我们必须在执行之前在每个系统上进行手动设置。 这样可以避免查找Maven本地存储库。 相反,它拿起在Systempath下提供的罐子 。 不出所料,此处没有传递性。

导入依赖关系范围是在Maven 2.0.9中首次引入的。 这对于基于多模块Maven的项目很有用。 要使用它,我们需要在父POM中配置<dependencyManagement> 。 另外, 它仅受<dependencyManagement>部分中类型为pom的依赖项支持。

这个想法是为了能够从其他项目中导入托管的依赖项。 因此,在我们的有效POM中 ,导入的依赖关系将替换为该项目中所有可用的有效依赖关系。

<dependencyManagement><dependencies><dependency><groupId>com.programmergirl</groupId><artifactId>my-project</artifactId><version>1.1</version><type>pom</type><scope>import</scope> </dependency></dependencies>
</dependencyManagement>

可传递性解析规则:

我们的主要打包项目不包含带有范围的项目依赖项- 提供测试 。 之所以如此,是因为它们本质上是可传递的。 为了解决具有给定范围的直接依赖项的传递性,我们具有以下规则:

  • 编译 –使用运行时引入可传递的依赖关系并编译范围,而不更改其范围
  • 测试编译运行时传递依赖项都与我们项目中的测试范围一起引入
  • 运行时 –使用项目中的运行时范围提取编译运行时传递依赖关系
  • 提供编译范围和运行时范围的依赖关系都将通过提供的范围引入

结论:

在本教程中,我们介绍了Maven中可用的所有六种依赖关系范围。 我们还讨论了基于Maven范围的传递依赖及其解析。

成为第一个发表评论的人。

翻译自: https://www.javacodegeeks.com/2019/05/maven-dependency-scopes.html

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

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

相关文章

[渝粤教育] 广东-国家-开放大学 21秋期末考试人力资源管理(专)10083k2

单项选择题 1、薪酬对于员工的重要性主要体现不包括&#xff1f;&#xff08; &#xff09; A、调节功能B、保障功能C、激励功能D、信号功能&#xff08;2 分&#xff09; A&#xff0e;D B&#xff0e;B C&#xff0e;A D&#xff0e;C 2、员工由工作本身所获得的心理满足和心…

物联网将成为第四次工业革命的基石

在一个利润微薄的行业中&#xff0c;物联网正在展示一系列实际应用案例&#xff0c;这些案例正在为早期采用者逐步带来成果。这就是物流4.0的开始吗&#xff1f; 物联网实现了一个互联的生态系统&#xff0c;该生态系统可以传输超出传统设备限制的物理环境信息。这些设备允许在…

为什么在极端恶劣环境下不能使用商用以太网交换机?

在工业现场中&#xff0c;极端温度可能切断远程数据流的输送&#xff0c;以太网交换机在现场传输中发挥着重要的作用&#xff0c;但由于其昂贵的价格&#xff0c;有些客户会选择使用商业级以太网交换机&#xff0c;但是这类交换机容易在极端环境下引起故障&#xff0c;这是为什…

网络 计算机不显示不出来,网页图片显示不出来怎么办 网络故障解决【详解】...

网页图片显示不出来怎么办?文字与图片是构成一个网页的两个最基本的元素。你可以简单地理解为&#xff1a;文字&#xff0c;就是网页的内容。图片&#xff0c;就是网页的美观。除此之外&#xff0c;网页的元素还包括动画、音乐、程序等等。有时候我们浏览网页却发现图片显示不…

[渝粤教育] 广东-国家-开放大学 21秋期末考试大学英语210262k2 (2)

1、I have much____ money than he does.&#xff08;2 分&#xff09; A&#xff0e;as B&#xff0e;not no C&#xff0e;more D&#xff0e;so 2、Last summer he went to Italy. He was _______Italy last summer.&#xff08;2 分&#xff09; A&#xff0e;at B&#xf…

物联网在改造海上钻井平台监测方面发挥着关键作用

物联网&#xff08;IoT&#xff09;并没有遗漏任何面临挑战的行业&#xff0c;它为这些行业提供了更多发展机会。Biz4Intellia首席执行官SanjeevVerma表示&#xff0c;凭借其在陆上石油和天然气运输方面的持续发展&#xff0c;物联网也已开始在海上钻井平台监测方面占据一席之地…

[渝粤教育] 广东-国家-开放大学 21秋期末考试工程项目管理10324k2

1、()是项目投产前由建设单位进行的一项重要工作&#xff0c;是在完成建设阶段任务以后转入到建筑产品的生产以及产品经营的必要条件 &#xff08;2.5 分&#xff09; A&#xff0e;可行性研究 B&#xff0e;资金筹备 C&#xff0e;招标 D&#xff0e;生产准备 2、基础设施工程…

这几个行业会从物联网革命中获得最大利益

工业物联网已经与消费物联网产品紧密地结合在一起&#xff0c;现正在改变我们所知的工业应用。Aranet公司的Vizma Bramane表示&#xff0c;当所有设备参数都可以全天候访问时&#xff0c;大数据将成为现实。 传感器提供的实时价值数据流可以让您更深入地了解现有流程的内部运作…

抖音计算机音乐你要我,抖音你要我怎么做是什么歌 抖音你要我怎么做怎么说才能爱我歌曲介绍...

最近小编刷抖音经常刷到唱“你要我怎么做怎么说才能爱我”的视频&#xff0c;觉得很好听就搜索了整首歌来听&#xff0c;相信很多小伙伴也和小编一样喜欢这首歌&#xff0c;接下来就把这首歌分享给大家。“你要我怎么做怎么说才能爱我”这首歌的歌名叫做《9277》&#xff0c;《…

7个问题教你正确选择POE供电设备

近年来&#xff0c;PoE供电技术的发展&#xff0c;从百兆到千兆&#xff0c;再到全千兆&#xff0c;PoE供电技术的发展势头越来越强劲。凭借简化用电设备的安装和部署、节能&#xff0c;安全等一系列优势&#xff0c;PoE供电成为无线覆盖、安防监控、以及智能电网等场景的新宠。…

物联网卡加持智能电网,发展更具优势

国家电网一直以来都是非常重要的部门&#xff0c;随着技术的不断革新&#xff0c;物联网开始广泛的应用于国家电网&#xff0c;目前大多数国家的主要目标是升级其配电系统上的老化设备并安装智能电表&#xff0c;智能电表可以插入物联网卡联网实现很多功能。 数据显示&#xff…

[渝粤教育] 广东-国家-开放大学 21秋期末考试建筑设备10327k1

断题 26、电梯的限速器和安全钳必须成对使用才能发挥作用。&#xff08;难度系数&#xff1a;易&#xff09;&#xff08;2 分&#xff09; 正确 错误 27、采取机械加压送风方式&#xff0c;以风机所产生的气体流动和压力差控制咽气的流动方向的防烟技术是自然排烟。&#xff0…

javafx中的tree_JavaFX中的塔防(4)

javafx中的tree好的&#xff0c;到目前为止&#xff0c;我们已经创建了一个TileMap&#xff0c;将其显示在屏幕上&#xff0c;并使其在第一部分中可编辑。 在第二部分中&#xff0c;我们使用A *算法实现了攻击路径的计算&#xff0c;并使敌人跟随该路径。 在第三部分中&#xf…

PoE交换机的好处,你真的知道吗?

电气设备需要通电才能工作&#xff0c;一些基于IP网络的各种设备也同样需要供电才能使用&#xff0c;比如说路由器、摄像头等&#xff0c;当然啦&#xff0c;自从有了PoE供电技术后&#xff0c;IP网络设备就又多了一种供电方式。那么&#xff0c;对于PoE交换机的好处你是否了解…

[渝粤教育] 广东-国家-开放大学 21秋期末考试服务标准化10011k1

1、采用国际及国外先进标准时&#xff0c;表示“等同采用”的代号是&#xff1f;&#xff08;2 分&#xff09; A&#xff0e;MOD B&#xff0e;NEQ C&#xff0e;ISO D&#xff0e;IDT 2、从命名规则上判断&#xff0c;GB/Z 30556.1-2017《电磁兼容 安装和减缓导则 一般要求》…

浅谈工业无线遥控器的基本定义及原理

基本定义 工业无线遥控器是专门用来控制工程机械或工业设备的远程无线遥控装置。主要用于冶金、造船及集装箱码头、仓储、机械制造、化工、造纸、建筑和工程机械等使用起重机械并使之实现遥控操作的行业。其有效控制范围为半径100米的任何方位且不受障碍物的影响&#xff0c;操…

招远西苑学校计算机老师,招远市西苑学校积极开展综合实践活动

水母网6月24日讯(通讯员 邵尊亮)近日&#xff0c;西苑学校初二级部组织学生分赴招远市综合实践学校&#xff0c;开展了以“提高意识、投入实践、挖掘潜力”为主题的综合实践活动。本次活动包括体能拓展、创意搭建、衍纸工艺、烘焙工艺等课程。综合实践学校的老师们精心准备&…

Spring MVC注释

介绍&#xff1a; 从Spring 2.5开始&#xff0c;我们可以使用注释来标记我们的Spring组件。 一种方法是在我们的appConfig.xml中使用<component-scan>标记&#xff1a; <context:component-scan base-package"com.programmergirl" />然后&#xff0c;S…

电源模块是电源吗?

我们平时用的充电器或电池等供电装置到底是不是电源呢&#xff1f;首先让我们来看一下电源的定义&#xff1a;电源就是把其他形式的能量转化成电能的装置。即&#xff1a;电源是提供电能的装置。因为它可以将其它形式的能转换成电能&#xff0c;所以我们把这种提供电能的装置叫…

[渝粤教育] 广东-国家-开放大学 21秋期末考试管理会计10171k2

1、下列项目中&#xff0c;变动成本法下计入产品成本的是( )。 &#xff08;2 分&#xff09; A&#xff0e;变动性制造费用 B&#xff0e;变动性管理费用 C&#xff0e;固定性管理费用 D&#xff0e;固定性制造费用 2、将成本中心划分为标准成本中心和费用中心的分类依据是&am…