在maven pom.xml文件中最多的就是dependency标签,我们用maven管理我们项目的依赖。这篇文章简单介绍dependency标签内部各个子标签的意义。

下面是dependency标签的格式

<dependencies>
    <dependency>
        <groupId/>
        <artifactId/>
        <version/>
        <type/>
        <scope/>
        <systemPath/>
    </dependency>
    ...
</dependencies>

下面我们分别来讨论其中的各个子标签:

1. groupId
这个标签主要用来唯一标识一个项目或者一组项目,它通常是java包名的全称,例如: io.netty, com.google;

2. artifactId
artifactId用来标识同一groupId下不同的项目,例如: netty-all, netty-handler

3. type
主要用来指明依赖的类型,例如: jar, war, pom,ear等;

4. version
用来标识一个生成物(artifact)的版本,例如: 1.1, 2.0-SNAPSHOT, 4.0.31.Final;

5. classifier
用来区分相同的pom文件下,不同环境构建出的生成物(artifact), 例如: javadoc, sources, jdk16, jdk17

所以一个项目在maven仓库的坐标(coordinate)全称可以表达如下:
artifactId:groupId:packing:version:classifier
例如: io.netty:netty-all:4.0.31.Final

任何pom.xml文件中都必须明确定义生成物(artifact)的坐标(coordianate), 例如:

<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.0.31.Final</version>
<packaging>jar</packaging>

上述的pom定义,最终生成的成果物的名称会遵循如下的格式:
<artifactId>-<version>.<packaging>

上述的pom定义的成果物的名称将是:
netty-all-4.0.31.Final.jar

6. scope
这个scope用来表示当前的依赖所作用的场景(即应该把它添加哪个环境中),它的取值主要有如下几个:
1. compile
2. runtime
3. optional
4. provided
5. test
6. import

7. systemPath
用来依赖本地文件系统的绝对路径的资源,例如,某些jar依赖由于授权关系,maven仓库不提供,必须用户统一相关协议,在指定的通道获取,这时候需要用户把下载的依赖资源保存到文件系统,这时通过maven提供的systemPath把资源引入到maven构建环境中。

文章转载至:https://blog.csdn.net/jjlovefj/article/details/74357388

[maven] dependency标签理解的更多相关文章

  1. Maven 基础标签之版本管理和冲突解决

    前言 我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括打包上线 maven基础 Maven 是一个项目管理工具,主要用于项目构建,依赖管理, ...

  2. Maven错误Failed to read artifact descriptor for xxx:jar 和 missing artifact maven dependency

    可参考:http://stackoverflow.com/questions/6111408/maven2-missing-artifact-but-jars-are-in-place http:// ...

  3. Maven Profile标签

    Maven Profiles标签可以针对不同的环境来使用不同的配置文件 在发布的时候可以用 mvn release -p product mvn release -p test mvn release ...

  4. lib目录和maven dependency目录的jar包冲突

    用eclipse时新建项目时,会在lib目录下自动生成一些jar包,然后又在pom.xml文件中添加了依赖,导致lib下的jar包和maven dependency目录下的jar包产生了冲突.刚开始r ...

  5. maven:pom.xml中没有dependency标签错误

    dependency的标签是包含在dependencies中的.

  6. maven dependency的版本冲突问题

    在改造一个旧项目中,遇到各种问题. 旧项目有十多个模块,因为没有一个统一的父pom,它们对第三方的jar的版本没有统一. 虽然也存在公共的依赖模块,比如commons.util,但是,我们的模块中,有 ...

  7. Maven - dependency那些事儿

    身边有几位刚使用Maven的同学表示——在一个叫"pom.xml"的文件里声明一个依赖就不用去手动添加jar了,感觉这东西和自己手动管理依赖没太大区别. 当然,并不是这样,在此记录 ...

  8. maven dependency中scope=compile 和 provided区别

    问题再现: 上次这边朋友问我一个问题,就是他们在pom.xml中的dependency中,看到有一些是<scope>provided</scope>的情况,比如如下: < ...

  9. Maven仓库的理解及配置

    什么是Maven仓库 在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文 件,如log4j.jar,junit. ...

随机推荐

  1. PySpider 爬虫系统

    PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI.采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器 ...

  2. [C++]PAT乙级1010. 一元多项式求导 (25/25)

    /* 1010. 一元多项式求导 (25) 设计函数求一元多项式的导数.(注:x^n(n为整数)的一阶导数为n*x^n-1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1 ...

  3. Swiper.js使用教程

    官网地址:(http://www.swiper.com.cn/). 一.Swiper.js简介: Swiper(前称Swiper master) 是一款免费以及轻量级的移动设备触控滑块的js框架,使用 ...

  4. jsp中的el表达式没有解析

    今天发现jsp中的el表达式没有解析,把解决的过程记录一下 在web.xml的web-app节点的版本改成2.4以上

  5. struts2简单入门

    框架是什么,框架有什么作用 框架 实现部分功能的代码. 作用 控制请求和响应. 相对于WEB项目的执行流程 struts2项目搭建流程 配置web.xml 配置前端控制器[核心控制器] ---一个fi ...

  6. MGR架构~ 整体性能架构的调优

    一 简介:MGR集群架构的调优二 过程:本文将从各个角度来具体阐述下三 硬件    1 硬件选择相同配置的服务器,磁盘,内存,cpu性能越高越好四 网络    1 0丢包和最好万兆网卡五 MGR本身  ...

  7. python - zipfile模块

    import zipfile # f=zipfile.ZipFile(filename, mode="r", compression=ZIP_STORED, allowZip64= ...

  8. Java内存模型-final域的内存语义--没明白,预留以后继续理解

    https://www.cnblogs.com/yuanfy008/p/9349275.html 来自 Java并发编程(1)-Java内存模型

  9. python编程 之 PyMysql包接口,python中如何使用数据库

    1,环境介绍 要求:使用数据库TESTDB.EMPLOYMENT EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME. 2,基本用法: impo ...

  10. SQL Server - 约束 CONSTRAINT

    总结 约束放置在表中,以下五种约束: NOT NULL 非空约束C 指定的列不允许为空值 UNIQUE 唯一约束U 指定的列中没有重复值,或该表中每一个值或者每一组值都将是唯一的 PRIMARY KE ...