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,项目的依赖性,以 ...
随机推荐
- springcloud11 spring cloud config
1.spring cloud config是什么 官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.2.1.RE ...
- SQLSERVER 语句交错引发的死锁研究
一:背景 1. 讲故事 相信大家在使用 SQLSERVER 的过程中经常会遇到 阻塞 和 死锁,尤其是 死锁,比如下面的输出: (1 row affected) Msg 1205, Level 13, ...
- 原生微信小程序的一些注意点
1.微信小程序的数据更新 Page({ // 响应式的数据定义在data里面 data: { bannerList: [] }, // 微信小程序的数据更新是在setData里面做的 this.set ...
- RabbitMQ基础和解疑
一.基础概念 1. Producer:生产者,就是投递消息的一方 消息一般可以包含2个部分:消息体和标签(Label).消息体也可以称之为payload,在实际应用中,消息体一般是一个带有业务逻辑结构 ...
- node.js 历史版本下载
https://nodejs.org/zh-cn/download/releases/
- 四川九联代工M301H hi3798 mv300 mt7668魔百和 强刷和TTL线刷(救砖)经验分享
以下都是本次自己操作后的一些经验,不是技术分享,也是看来很多水教程后总结的精华. 四川九联代工M301H hi3798 mv300 mt7668魔百和 一.强刷 1.强刷的教程网上有很多,自己百度. ...
- GeoServer发布MySQL空间数据
1. 概述 MySQL是常用的关系型数据库,MySQL遵从OpenGIS联盟(OGC)的规范,实施了空间扩展,更详细的信息可以参考: MySQL :: MySQL 8.0 Reference Manu ...
- Angular UI库
1.angular 使用 bootstrap 安装bootstrap npm install bootstrap --save 安装bootstrap-icons npm i bootstrap-ic ...
- FTP调优
最近在解决客户的问题时接触到了一些FTP的问题,自己在使用过程中发现了很多问题,所以这里总结了一些调优的办法: 服务:vsftp 非常安全文件传输 配置文件:/etc/vsftpd/vsftpd.co ...
- (2) 使用phpstudy 实现局域网内远程访问本地ThreeJS示例
1 下载phpStudy 作为本地开发服务器 hpStudy下载后解压安装.安装完成后启动服务.如下: 2 打开phpStudy的安装目录,进入到安装目录的 PHPTutorial \ WWW ...