POM配置文件--dependencies标签的用法

dependencies标签的用法

1.概述

本文章描述了dependencies标签的基本用法,附上自己的一些理解。如有不对之处欢迎指正!具体详细请参考【官方文档】

2.示例

dependencies标签主要用于管理项目中需要引入的其他依赖。
如下示例是dependencies标签中会出现的标签及简单概述

<project>
  ...
    
    <dependencies>
        <dependency>
        	<!--组织ID-->
            <groupId></groupId>
            <!--项目ID-->
            <artifactId></artifactId>
            <!--版本号-->
            <version></version>
            <!--依赖类型-->
            <type></type>
            <!--类别(类目)-->
            <classifier></classifier>
            <!--指定依赖的范围-->
            <scope></scope>
            <!--指定本地jar路径,和scope一起使用-->
            <systemPath></systemPath>
            <!--排除依赖列表-->
            <exclusions>
                <exclusion>
                    <artifactId></artifactId>
                    <groupId></groupId>
                </exclusion>
            </exclusions>
            <!--指定是否需要被依赖-->
            <optional></optional>
        </dependency>
    </dependencies>
  ...

</project>

3.dependencies中标签使用

  • groupId,artifactId,version
    首先绝大部分依赖可以通过groupId,artifactId,version这三个标签找到唯一的依赖项,为什么说绝大部分而不是全部呢?这里就要引入下面这个标签的作用classifier
  • classifier
    classifier主要两个作用:
    1、可以简单地看做字符串的拼接,一般跟在groupId,artifactId,version标签后面使用,用于区分不同的工作环境。
    典型的就有json-lib这个项目:maven仓库链接,版本一样,运行的jdk不一样:
    json-lib仓库截图

此时项目中如果需要引用json-lib这个依赖,只靠groupId,artifactId,version这三个元素不能准确找到需要的项目,此时在这里我们指定jdk15就可以准确的从中央仓库获取到我们需要的依赖

  • 注意:classifier相当于字符串拼接,只能跟在groupId,artifactId,version后面。
  • 错误示例
<dependency>
   <groupId>net.sf.json-lib</groupId>
   <artifactId>json-lib</artifactId>
   <classifier>jdk13</classifier>
   <version>2.2.2</version>
</dependency>

上面定义的依赖最终会在中央仓库查找json-lib-jdk13-2.2.2.jar
2、classifier的另一个作用是可以再classifier中指定sources和javadoc,这样引入的依赖就会附带上源码或者api文档等信息

  • type:
    官方文档指定的type类型有如下几种:pom,jar ,test-jar,maven-plugin,ejb,ejb-client,war,ear,rar,java-source,javadoc,如果不指定,默认为jar.一般开发中常用的是jar,war,pom等。具体参见官方说明

  • scope:
    scope主要用于指定依赖的作用范围,其中有如下取值:

    取值作用范围依赖关系
    compilemaven的默认范围,作用在所用范围可以依赖传递
    provided只在编译和测试时生效,正式发布jar包或者war包时 该依赖不会被包含进去不会传递
    runtime只在运行时和测试时生效,典型的是数据库驱动依赖可以依赖传递
    test只在测试时生效不会依赖传递
    system表明该依赖不会从中央仓库查找,而是从用户指定的systemPath位置获取,与systemPath共同使用
  • systemPath:
    仅当scope为system时才可以使用。否则,如果设置了这个元素,构建时将会失败。systemPath的路径必须是绝对路径,这里可以利用properties的属性来指定。例如${java.home}/lib。
    官方建议如无必要不要用此方式,可以先将依赖安装到maven仓库后在做引入。具体安装依赖到Maven可以参考如下:Maven命令之–mvn install:install-file

  • exclusions:
    排除依赖中不需要的项

  • optional:
    默认值:false。optional=true 表示此依赖包不会在其他项目中被引用加载、不参与maven的依赖传递。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值