Maven中的元素Exclusions、modules、parent、properties以及import
Dependencies:是可选依赖(Optional Dependencies)
Exclusions:是依赖排除(Dependency Exclusions)
2、Dependencies
(1)当一个项目A依赖另一个项目B时,项目A可能很少一部分功能用到了项目B,此时就可以在A中配置对B的可选依赖。举例来说,一个类似hibernate的项目,它支持对mysql、oracle等各种数据库的支持,但是在引用这个项目时,我们可能只用到其对mysql的支持,此时就可以在这个项目中配置可选依赖。
(2)配置可选依赖的原因:
1)节约磁盘、内存等空间;
2)避免license许可问题;
3)避免类路径问题,等等。
(3)示例:
- <project>
- ...
- <dependencies>
- <!-- declare the dependency to be set as optional -->
- <dependency>
- <groupId>sample.ProjectB</groupId>
- <artifactId>Project-B</artifactId>
- <version>1.0</version>
- <scope>compile</scope>
- <optional>true</optional> <!-- value will be true or false only -->
- </dependency>
- </dependencies>
- </project>
假设以上配置是项目A的配置,即:Project-A –> Project-B。在编译项目A时,是可以正常通过的。如果有一个新的项目X依赖A,即:Project-X -> Project-A。此时项目X就不会依赖项目B了。如果项目X用到了涉及项目B的功能,那么就需要在pom.xml中重新配置对项目B的依赖。假设A->B, B->x(可选), B->y(可选)。这里由于x,y是可选依赖,依赖不会传递,x,y将不会对a有任何影响
3、Exclusions
(1)当一个项目A依赖项目B,而项目B同时依赖项目C,如果项目A中因为各种原因不想引用项目C,在配置项目B的依赖时,可以排除对C的依赖。
(2)示例(假设配置的是A的pom.xml,依赖关系为:A –> B; B –> C):
- <project>
- ...
- <dependencies>
- <dependency>
- <groupId>sample.ProjectB</groupId>
- <artifactId>Project-B</artifactId>
- <version>1.0</version>
- <scope>compile</scope>
- <exclusions>
- <exclusion> <!-- declare the exclusion here -->
- <groupId>sample.ProjectC</groupId>
- <artifactId>Project-C</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- </dependencies>
- </project>
4、maven的依赖调解有两大原则:路径最近者优先;第一声明者优先。
5、maven的归类依赖
- <properties>
- <springframework.version>2.5.6<springframework.version>
- </properties>
定义此属性值后,maven会将pom中的所有的${springframework.version}替换成实际值2.5.6
modules、parent、properties以及import的详细说明网址:https://www.cnblogs.com/youzhibing/p/5427130.html
Maven中的元素Exclusions、modules、parent、properties以及import的更多相关文章
- 漫画:工作这么多年,你居然不知道 Maven 中 Optional 和 Exclusions 的区别?
欢迎关注笔者的公众号: 小哈学Java, 专注于推送 Java 领域优质干货文章!! Maven 依赖排除(Exclusions) 因为 Maven 构建项目具有依赖可传递的特性,当你在 pom.xm ...
- Maven 中 dependencyManagement 元素,知识点
Maven 提供的 dependencyManagement 元素既能让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性.在 dependencyManagement 元素下的依赖声明不会 ...
- Maven pom.xml中的元素modules、parent、properties以及import
前言 项目中用到了maven,而且用到的内容不像利用maven/eclipse搭建ssm(spring+spring mvc+mybatis)用的那么简单:maven的核心是pom.xml,那么我就它 ...
- Maven pom.xml中的元素modules、parent、properties以及import(转)
前言 项目中用到了maven,而且用到的内容不像利用maven/eclipse搭建ssm(spring+spring mvc+mybatis)用的那么简单:maven的核心是pom.xml,那么我就它 ...
- Maven中的parent定义的dependency,其中继承者是可以直接使用parent中的Maven Dependencies的。
Maven中的parent定义的dependency,其中继承者是可以直接使用parent中的Maven Dependencies的. packagin要选择jar,parent project要选择 ...
- maven中 pom.xml与properties等配置文件之间互相读取变量
问题由来: 最近公司的maven项目需要改进,希望把该项目依赖的一系列artifact放到properties文件中,这样做的目的是是为了很容易看到四月份release和七月份的release,它们所 ...
- Maven中pom.xml文件的配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Maven中的配置文件
<span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...
- maven中的pom配置文件标签的详细介绍
<span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...
- maven中pom.xml标签介绍
pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以 ...
随机推荐
- Hystrix断路器
1.介绍 ①产生原因 服务雪崩: 多个微服务之间调用,假设A调用B,C,B和C又调用其他微服务,这就是扇出. 如果扇出的链路上有某个微服务调用响应时间过长或者不可用,那么A调用会占用越来越多的系统资源 ...
- uboot启动过程 3
uboot启动过程1描述到 _start -> reset -> save_boot_params -> save_boot_params_ret -> cpu_init_ ...
- 【源码】RapidJSON 源码剖析(0):关于 RapidJSON
RapidJSON 源码剖析(0):关于 RapidJSON 为什么会有<RapidJSON 源码剖析>系列博文? 之前转载的 Technique to Read Source Code ...
- SpringBoot多数据源以及事务处理
背景 在高并发的项目中,单数据库已无法承载大数据量的访问,因此需要使用多个数据库进行对数据的读写分离,此外就是在微服化的今天,我们在项目中可能采用各种不同存储,因此也需要连接不同的数据库,居于这样的背 ...
- Express 项目发送 Cookie
在使用 Cookie 之前,需要安装 Express 中间件--cookie-parser: npm i cookie-parser import express from "express ...
- Qt-FFmpeg开发-视频播放【软解码 + OpenGL显示RGB图像】(3)
Qt-FFmpeg开发-视频播放[软解码 + OpenGL显示RGB图像] 目录 Qt-FFmpeg开发-视频播放[软解码 + OpenGL显示RGB图像] 1.概述 2.实现效果 3.FFmpeg软 ...
- Linux环境安装Go
1.下载Go发行版 从官方地址:https://golang.org/dl/ 上下载合适的 二进制发行版 (例如: go1.19.6.linux-amd64.tar.gz ): wget https: ...
- 23年用vuex进行状态管理out了,都开始用pinia啦!
1 Vue2项目中,Vuex状态管理工具,几乎可以说是必不可少的了.而在Vu3中,尤大大推荐我们使用pinia(拍你啊)进行状态管理,咱得听话,用就完了. 使用之前我们来看一下,使用 pinia 给我 ...
- SAP SMARTFORMS World格式白屏
解决方法: SE38 RSCPSETEDITOR 不勾选SAP script 和智能表
- Windows 远程桌面连接ip查询
导航到:应用程序和服务日志 > Microsoft > Windows > TerminalServices- RemoteConnectionManager,右键单击"O ...