Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Maven学习笔记四(坐标和依赖)

Maven学习笔记四(坐标和依赖)

作者头像
IT架构圈
发布于 2018-06-01 03:26:36
发布于 2018-06-01 03:26:36
6230
举报
文章被收录于专栏:IT架构圈IT架构圈
坐标

什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点

Maven 坐标主要组成

groupId:定义当前 Maven 项目隶属项目、组织

artifactId:定义实际项目中的一个模块

version:定义当前项目的当前版本

packaging:定义该项目的打包方式(pom/jar/war,默认为 jar)

groupId、artifactId、version 简称为 GAV。

Maven 为什么使用坐标?

Maven 世界拥有大量构件,需要找一个用来唯一标识一个构建的统一规范 拥有了统一规范,就可以把查找工作交给机器

如何获取坐标 http://mvnrepository.com/ 网站上可以搜索具体的组织或项目关键字,之后复制 对应的坐标到 pom.xml 中。如:

依赖

依赖范围 scope 用来控制依赖和编译,测试,运行的 classpath 的关系。具 体的依赖范围有如下 6 种:

1) compile: 编译域,这个是 Maven 中 scope 的默认值,我们平时不写 scpoe 配置时默认就是使用这个值。compile 表示被依赖项目需要同当前项目编译 时一起进行编译,项目测试期以及本项目运行时期同样生效,打包的时候需 要包含进去。

2) test:测试域,表示被依赖的项目仅在项目进行测试的时候生效,一般将日 志等依赖包(如:Junit)配置为 test,项目运行时不会生效。

3) provided:provided 意味着打包的时候可以不用打包进去,别的容器会提供, 如 Servlet-API,Tomcat 这些容器会提供,所以打包,运行时无需提供。

4) runtime:运行域,表示被依赖项目不会参与项目的编译,但项目的测试期和 运行时期会参与。与 compile 相比,跳过了编译这个环节。(如:JDBC 驱动)

5) system:系统范围,自定义构件,指定 systemPath;跟 provided 相似,但是 在系统中要以外部 JAR 包的形式提供,maven 不会在 repository 查找它。

6) import:只使用在中,表示从其它的 pom 中导入 dependency 的配置。

添加依赖

依赖的传递

A(maven_web1)项目,B(maven_web2)项目 ,C(maven_test2)项目

首先A项目中添加依赖包,保存后项目中会自动导入包

然后A项目的包传递到B项目中,在B项目中依赖:

c项目中依赖B项目的包(因为B也依赖了A项目的包,因此C会依赖A,B项目的包):

说明:

可选依赖

在依赖节点 dependency 中的可以控制当前的依赖是否向下传递; 默认值为 false,表示向下传递。

设置log4j<optional>true</optional>

B项目中log4j包已经没有中A中传递过来

排除依赖

在 pom 中的依赖节点中,如果引入的依赖包含了很多其它的传递依赖,而且 项目需要的这些依赖的版本和传递依赖的不相符;那么可以在依赖节点中设置排 除依赖节点

B项目进行排除依赖,C项目也不接收A中传递给B的依赖

依赖冲突

1.不同依赖路径的情况

如果依赖的路径不相同的时候,以最短的路径为准

比如项目A中咯log4j版本为1.2.14,我们在B中引入1.2.16,那么项目C就会变成1.2.16,就近原则。

2.相同依赖路径的情况

1)如果直接依赖中包含有同一个坐标不同版本的资源依赖,以配置顺序下方的 版本为准

2)如果间接依赖中包含有同一个坐标不同版本的资源依赖,以配置顺序上方的 版本为准

首先我们就导入spring-beans这个资源

然后2个资源依赖一起引用,spring-core版本变成了4.1.6

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Maven详解(五)------ 坐标的概念以及依赖管理
IT可乐
2018/01/04
1.7K0
Maven详解(五)------ 坐标的概念以及依赖管理
Maven中Scope的分类
默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。
Ant丶
2022/03/01
8770
Maven 核心原理解析(1)
Maven 是每一位Java工程师每天都会接触的工具, 但据我所知其实很多人对Maven理解的并不深, 只把它当做一个依赖管理工具(下载依赖、打包), Maven很多核心的功能反而没用上. 最近重读 Maven实战, 虽然这本书年岁较老(10年出版: 那还是Hudson年代), 但绝大部分还是很值得参考的. 本文讲述Maven的核心原理和概念, 因此还是大纲参考了这本书, 但细节大多参考的Maven的官方文档以及网友释出的博客. 本文主要讲解Maven的: 坐标与依赖、 仓库、 生命周期与插件、 模块聚合、
Java帮帮
2018/03/16
2.9K0
Maven 核心原理解析(1)
五分钟快速掌握Maven的核心概念
前两天在一个技术群,有人还在问maven中groupId、artifactId、version这些关键字的含义是什么,于是,我觉得还是很有必要来聊聊Maven中的这些核心概念。
田维常
2021/01/13
6900
五分钟快速掌握Maven的核心概念
>>技术应用:Maven中的scope(一)
在pom.xml依赖中(org.springframework.boot:spring-boot-dependencies),可选择的值如下:
艾特
2023/10/10
2120
>>技术应用:Maven中的scope(一)
maven 学习笔记
maven 官网 https://maven.apache.org 仓库查询 https://www.mvnrepository.com/ 编译,生成target文件夹 mvn compile 测试 mvn test 打包 mvn package 删除target文件夹 mvn clean 安装jar包到本地仓库中 mvn install 自动建立项目骨架 mvn archetype:generate [-DgroupId=xxxx(组织名,公司网址的反
Meet相识
2018/09/12
5150
【Maven 入门教程】3、Maven 仓库、坐标以及依赖管理
在我们创建使用 Maven 项目的过程中,当需要用到第三方的插件时,都是通过依赖管理来达成,也就是 Maven 项目中必有的 pom.xml 文件。POM(Project Object Model),即 项目对象模型,其中定义了 Maven 项目的形式。因此,pom.xml 可以看做是 Maven 项目中的导航。
村雨遥
2022/06/16
6380
Maven入门,读完这篇就够了
Maven作为一个构建工具,不仅能帮我们自动化构建,还能够抽象构建过程,提供构建任务实现;它跨平台,对外提供了一致的操作接口,这一切足以使它成为优秀的、流行的构建工具。
Lansonli
2021/10/09
9020
Maven学习笔记之Maven入门
本文涉及Maven知识点有Maven安装与配置,Maven项目结构,Maven依赖管理,Maven项目生命周期管理,基于IDE的Maven使用和Maven私服搭建。
Jetpropelledsnake21
2022/03/07
7110
Maven学习笔记之Maven入门
Maven(六)之依赖管理
前面讲了maven一些关于Maven的简单知识,今天我给大家分享一些Maven的依赖管理。我相信用过maven的人都知道,它很重要的功能就是通过依赖来添加jar包。 让我们领略一下Maven是怎么管理我们的jar包的。 一、Maven坐标 1.1、数学中的坐标   在平面上,使用 X 、Y 两个向量可以唯一的定位平面中的任何一个点   在空间中,使用 X、Y、Z 三个向量可以唯一的定位空间中的任意一个点 1.2、Maven 中的坐标   俗称 gav:使用下面三个向量子仓库中唯一定位一个 Maven 工程
用户1195962
2018/01/18
8800
Maven(六)之依赖管理
maven实战总结,工作中常见操作
翻译:知识的积累、专家、内行。跨平台的项目管理工具。Apache 组织的开源项目。主要服务于基于 Java 平台的项目构建、依赖管理和项目信息管理。
Java识堂
2020/11/19
1.4K0
maven实战总结,工作中常见操作
Maven详解
1 Maven介绍 1.1 项目开发中遇到的问题 1、都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行? 2、为什么在我的机器上可以正常打包,而配置管理员却打不出来? 3、项目组加
Java帮帮
2018/03/15
1.3K0
Maven详解
maven 依赖管理最佳实践
maven 是一个常用的 java 跨平台项目管理工具,主要工作是项目构建、依赖管理和项目信息管理。 除了编写源代码,我们每天有相当一部分时间花在了编译、运行单元测试、生成文档、打包和部署等繁琐而不起眼的工作上,这就是项目的构建过程。 而 maven 可以自动地从清理、编译、测试到生成报告、打包、部署,极大的简化了我们日常的工作,同时它还是一个依赖管理工具和项目信息管理工具,提供了中央仓库,能帮助我们自动下载构件。 作为 java 程序员必备的工具,深入研究和了解 maven 的使用是非常重要的,尤其是在构建失败、包冲突解决时,只有了解了我们即将介绍的 maven 工具的用法和要点才不会一筹莫展。 本文我们就来重点介绍一下 maven 作为依赖管理和项目信息管理工具的使用。
用户3147702
2022/06/27
9090
Web-第二十五天 Maven学习一【悟空教程】
解决方案:maven对项目生命周期进行定义,规范,开发人员和测试人员使用maven软件完成构建。
Java帮帮
2018/07/27
9250
Web-第二十五天 Maven学习一【悟空教程】
Maven的基本使用
Maven就是Apache下的一个开源项目。它是用纯java开发的。是一个项目管理工具。使用Maven对java项目进行构建、依赖管理。
不愿意做鱼的小鲸鱼
2022/09/24
6660
Maven的基本使用
Maven基本知识
​ 将 apache-maven-3.5.0-bin.zip 解压到一个非中文无空格的目录下。 例如:
OY
2022/03/17
7370
Maven基本知识
Maven
之前我们导入依赖的时候,每次都要去下载对应的 Jar 包,这样其实是很麻烦的,并且还有可能一个 Jar 包依赖于另一个 Jar 包,因此我们需要一个更加方便的包管理机制。
小简
2023/01/04
7580
Maven
IDEA与MAVEN使用
maven是一款优秀的服务构建工具,基于约定优于配置原则,提供标准的服务构建流程。maven的优点不仅限于服务构建,使用maven能够做到高效的依赖管理,并且提供有中央仓库可以完成绝大多数依赖的下载使用。
zhipingChen
2019/02/25
5K1
IDEA与MAVEN使用
maven 项目依赖
依赖的作用可以将项目以包的方式引用到当前项目中进行使用。 实际上平时引用的jar包都看可以看成是一个个子项目被引入到了项目中。
潇洒
2023/10/20
3390
maven 项目依赖
【maven】什么是坐标(依赖)继承与模块、web项目启动&访问
   <dependencies>        <dependency>            <groupId>com.czxy</groupId>            <artifactId>itcast-tools</artifactId>            <version>1.5.7</version>        </dependency>    </dependencies>
陶然同学
2023/02/24
1.1K0
【maven】什么是坐标(依赖)继承与模块、web项目启动&访问
相关推荐
Maven详解(五)------ 坐标的概念以及依赖管理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档