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的依赖传递。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Mavenpom 文件中,dependence 节点用于声明对其他项目的依赖。如果 dependence 的 type 属性设置为 "pom",则意味着你依赖的是另一个项目的 pom 文件,而不是实际的项目的编译后的代码或者二进制文件。 这种情况通常出现在你希望继承另一个项目的配置信息,而不需要实际依赖该项目的代码时。例如,你可能希望将你的项目与另一个项目使用相同的依赖版本,或者使用相同的插件配置。在这种情况下,你可以在自己的 pom 文件中声明对另一个项目的 pom 文件的依赖,并在自己的 pom 文件中继承该项目的配置信息。 示例: ```xml <project> <!-- 省略其他信息 --> <dependencies> <!-- 依赖另一个项目的 pom 文件 --> <dependency> <groupId>com.example</groupId> <artifactId>other-project</artifactId> <version>1.0</version> <type>pom</type> </dependency> </dependencies> </project> ``` 在这个例子中,你的项目会依赖另一个项目的 pom 文件,但不会依赖另一个项目的代码。 ### 回答2: 在Maven Pom文件中,当一个依赖项的type设置为pom时,意思是这个依赖项本身是一个Pom文件,而不是一个Jar文件或其他文件类型。Pom(Project Object Model)文件是Maven项目的核心配置文件,它描述了项目的结构和依赖关系。 当我们在Pom文件中声明一个依赖项,并将其type设置为pom时,我们是在告诉Maven该依赖项是一个使用Pom文件技术进行管理的模块或项目。这意味着该依赖项本身是由一个Pom文件来定义其本身的依赖关系和其他配置信息。 当我们在项目的Pom文件中使用type为pom的依赖项时,Maven会根据该依赖项的Pom文件来解析其依赖关系,并将其作为项目的子模块或子项目进行处理。这意味着Maven会读取该依赖项的Pom文件并解析其中的依赖关系,以确保项目能够正确地构建和运行。 type为pom的依赖项通常用于管理项目中的多个模块和子项目之间的依赖关系。通过将模块之间的依赖关系集中管理,可以确保项目的构建过程更加简洁和可维护。 总而言之,type为pom的依赖项表示该依赖项本身是一个Pom文件,用于管理项目中的模块或子项目之间的依赖关系和其他配置信息。 ### 回答3: 在MavenPOM(Project Object Model)文件中,<dependency>标签中的type属性用于指定依赖的类型。当type属性的值为"pom"时,表示该依赖是一个POM文件的引用。 POM文件是Maven项目中的核心文件,它描述了项目的元数据,包括项目的坐标、依赖关系和构建配置等信息。而当我们的项目需要引用其他的Maven项目时,可以通过在POM文件中声明<dependency>标签来指定依赖关系,并通过指定type属性为"pom"来引用其他POM文件。 当我们引用一个POM类型的依赖时,Maven会将目标POM文件中的所有依赖自动导入到当前项目中。这种方式适用于管理多个相关的项目,可以统一管理它们的依赖,减少维护成本。 此外,使用POM类型的依赖还可以实现项目的分模块管理。通过将子模块的POM文件定义成POM类型的依赖,在父级项目的POM文件中引用它们,可以构建出一个包含所有子模块的整体项目。这样,在进行项目构建和依赖管理时,可以更加灵活和方便,有利于提高项目的可维护性和可扩展性。 综上所述,当在MavenPOM文件中使用<dependency>的type属性为"pom"时,表示引用了一个POM类型的依赖,这将会将目标POM文件中的所有依赖导入到当前项目中,实现依赖统一管理和项目分模块管理的目的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值