[maven] dependency标签理解
在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标签理解的更多相关文章
- Maven 基础标签之版本管理和冲突解决
前言 我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括打包上线 maven基础 Maven 是一个项目管理工具,主要用于项目构建,依赖管理, ...
- 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:// ...
- Maven Profile标签
Maven Profiles标签可以针对不同的环境来使用不同的配置文件 在发布的时候可以用 mvn release -p product mvn release -p test mvn release ...
- lib目录和maven dependency目录的jar包冲突
用eclipse时新建项目时,会在lib目录下自动生成一些jar包,然后又在pom.xml文件中添加了依赖,导致lib下的jar包和maven dependency目录下的jar包产生了冲突.刚开始r ...
- maven:pom.xml中没有dependency标签错误
dependency的标签是包含在dependencies中的.
- maven dependency的版本冲突问题
在改造一个旧项目中,遇到各种问题. 旧项目有十多个模块,因为没有一个统一的父pom,它们对第三方的jar的版本没有统一. 虽然也存在公共的依赖模块,比如commons.util,但是,我们的模块中,有 ...
- Maven - dependency那些事儿
身边有几位刚使用Maven的同学表示——在一个叫"pom.xml"的文件里声明一个依赖就不用去手动添加jar了,感觉这东西和自己手动管理依赖没太大区别. 当然,并不是这样,在此记录 ...
- maven dependency中scope=compile 和 provided区别
问题再现: 上次这边朋友问我一个问题,就是他们在pom.xml中的dependency中,看到有一些是<scope>provided</scope>的情况,比如如下: < ...
- Maven仓库的理解及配置
什么是Maven仓库 在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文 件,如log4j.jar,junit. ...
随机推荐
- bzoj 1531 Bank notes 多重背包/单调队列
多重背包二进制优化终于写了一次,注意j的边界条件啊,疯狂RE(还是自己太菜了啊啊)最辣的辣鸡 #include<bits/stdc++.h> using namespace std; in ...
- PHP获取表单并使用数组存储 疯狂提示 Notice: Undefined offset
$answer=array(); $answer[0]='0'; for($i=1;$i<=$QUESTION_COUNT;$i++){ $answer[$i]=$_POST[(string)$ ...
- 简单SQL语句
一.基础 模式定义了数据如何存储.存储什么样的数据以及数据如何分解等信息,数据库和表都有模式. 主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键). SQL 语句不区分大小 ...
- ES6走一波 Proxy/Reflect
Proxy:像拦截器,对目标对象修改等进行拦截,是一种元编程(meta programming),即修改JS语言本身. //生成proxy实例,两个参数都是对象,targetObj是要拦截的目标对象, ...
- IE9浏览器打开开发者工具代码正常执行,反之报错
1.can i use console IE9开发者工具打开时支持console对象,否则报错. 2.由于出现错误 80020101 而导致此项操作无法完成 测试代码 <!DOCTYPE ht ...
- mouseover,mouseout与mouseenter,mouseleave
针对单个元素,使用感一样. 差异提现在有子元素的情况下: mouseover和mouseout在父元素和其子元素都可以触发,当鼠标穿过一个元素时,触发次数得依子元素数量而言. mouseenter和m ...
- P1880 [NOI1995]石子合并(区间DP)
题目链接:https://www.luogu.org/problemnew/show/P1880 题目大意:中文题目 具体思路:和上一篇的思路是差不多的,也是对于每一个小的区间进行处理,然后再归并到大 ...
- php编程 之 php基础二
1,if...else...语句 规则简介: if 语句 - 在条件成立时执行代码 if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码 if...elseif....e ...
- xadmin插件开发
参考:http://blog.csdn.net/qq_15682489/article/details/70174784 项目中新添加的organization模块需要在toolbar中添加“课表详细 ...
- Boost 序列化
原文链接: https://blog.csdn.net/qq2399431200/article/details/45621921 1. 编译器 gcc, boost 1.55 2.1第一个简单的例子 ...