[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. ...
随机推荐
- 在Linux上安装Git
Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.而国外的GitHub和国内的Coding都是项目的托管平台.但是在使用Git工具的时候,第一步要学会如何安装gi ...
- 【LeetCode】227. Basic Calculator
Problem: Implement a basic calculator to evaluate a simple expression string. The expression string ...
- React 体验
https://github.com/facebook/create-react-app npm i -g create-react-app cd <your-folder> creat ...
- 手动写Entity Framework 数据库上下文和Model实体
1.引用EF对应的程序集 使用命令安装EntityFramework包Install-Package EntityFramework Entity Framework简单目录: 1.context数据 ...
- pyqt5模块介绍
python各种库介绍 https://wiki.python.org/moin/GuiProgramming PyQt5.QtWidgets 包含控件 PyQt5.QtGui 图 ...
- 解决ASP.NET中ServiceStack.Redis每小时6000次访问请求的问题
1.可以使用3.0的版本: Install-Package ServiceStack.Redis -Version 3.0 2.使用ServiceStack.Redis.Complete: Insta ...
- mkyaffs2image 生成不了120M的镜像文件的解决方法
下载链接: http://download.csdn.net/download/macrocrazier/3807761 用上述下载的链接会出现Failed to execute /linuxrc ...
- 第一章 Android系统的编译和移植实例
第一章 Android系统的编译和移植实例 这一章节主要介绍了Android系统的编译和移植技术,作为建立在Linux内核的基础上的Android操作系统,它的编译和移植不论在过程还是技术方面都和嵌入 ...
- mongodb系列~mongodb定时删除数据
一 简介:本文介绍创建自动删除数据的TTL索引 二 目的 定时删除数据三 创建方法 db.collection.createIndex(keys, options) options: ex ...
- 转: hibernate配置文件hibernate.cfg.xml和.hbm.xml的详细解释
http://blog.csdn.net/yuhui123999/article/details/51886531 hibernate.cfg.xml -标准的XML文件的起始行,version='1 ...