Maven之依赖详解

本文详细介绍了Maven中的依赖管理,包括依赖的坐标(groupId, artifactId, version等)、依赖的引入方式、作用范围(compile, test, provided等)及其传递性。还探讨了依赖冲突的调解原则和最佳实践,如排除依赖、归类管理和依赖分析指令的使用。" 105468941,8332810,Idea 2020 官方汉化包安装教程,"['intellij idea', 'java', '开发工具']
摘要由CSDN通过智能技术生成

Maven之依赖详解

依赖的坐标

通过经纬度可以找到地图上任意一个位置,那么如何才能找到一个Maven世界中的一个构件呢?对于项目依赖管理作为主要功能之一的Maven使用groupId, artifactId, version, packaging, classifier这5个维度对构件进行定位。下面分别对各个维度的定义和作用进行解释:

  • groupId: 定义当前Maven项目隶属的实际项目。需要注意的两点是:
    1. Maven构件和实际项目不一定是一对一的关系,因为Maven中有模块的概念,所以通常一个实际项目会被划分为多个模块,一个实际项目也就有多个构件。最典型的如SpringFramework,其包含了spring-beans, spring-core等众多模块。
    2. groupId不应与公司或组织对应,应划分到公司下的实际项目中,如果与公司或组织对应,则Maven构件的划分将很难进行(无法根据坐标判断是哪个实际项目下的模块)。
  • artifactId: 定义实际项目中的一个Maven项目(模块)。推荐做法是使用带有实际项目含义的名称作为前缀。比如SpringFramework中的,spring-beans就是以实际项目名spring作为前缀。这样做的好处是方便寻找实际的构件,默认情况下Maven生成的构件的文件名会以artifactId作为开头,如:spring-beans-5.1.6.REALEASE.jar,所以使用实际项目名作为前缀可以方便的在目录中寻找某项目的一组构件;否则,A项目的beans模块与B项目的beans模块将混杂在一起,很难按照实际项目对其进行区分。
  • version: 定义Maven项目(构件)当前所处的版本。Maven将项目版本分为了发布版和快照版。
  • packaging: 定义Maven项目(构件)的打包方式。通常打包方式是与生成构件的文件扩展名一致的;如packaging为jar,则最终生成的文件名为xxx.jar;不对packaging进行定义时默认值为jar
  • classifier:该元素用来帮助定义构建输出的一些附属构件。不能直接定义项目的classifier,因为附属构件不是项目直接默认生成的,而是由附加的插件帮助生成的。(不是很明白)

上述5个维度中,groupId, artifactId和version是必须要在构件中定义的,packaging是可选的,classifier则是不能直接定义的。


依赖的引入

当得知依赖的坐标之后,我们该如何引入依赖呢?依赖引入的结构和描述依赖的基本组成元素如下:


<project>
    ...
    <dependencies>
        <dependency>
            <groupId>...</groupId>
            <artifactId>...</artifactId>
            <version>...</version>
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值