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)示例:

  1.  
    <project>
  2.  
    ...
  3.  
    <dependencies>
  4.  
    <!-- declare the dependency to be set as optional -->
  5.  
    <dependency>
  6.  
    <groupId>sample.ProjectB</groupId>
  7.  
    <artifactId>Project-B</artifactId>
  8.  
    <version>1.0</version>
  9.  
    <scope>compile</scope>
  10.  
    <optional>true</optional> <!-- value will be true or false only -->
  11.  
    </dependency>
  12.  
    </dependencies>
  13.  
    </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):

  1.  
    <project>
  2.  
    ...
  3.  
    <dependencies>
  4.  
    <dependency>
  5.  
    <groupId>sample.ProjectB</groupId>
  6.  
    <artifactId>Project-B</artifactId>
  7.  
    <version>1.0</version>
  8.  
    <scope>compile</scope>
  9.  
    <exclusions>
  10.  
    <exclusion> <!-- declare the exclusion here -->
  11.  
    <groupId>sample.ProjectC</groupId>
  12.  
    <artifactId>Project-C</artifactId>
  13.  
    </exclusion>
  14.  
    </exclusions>
  15.  
    </dependency>
  16.  
    </dependencies>
  17.  
    </project>

4、maven的依赖调解有两大原则:路径最近者优先;第一声明者优先。 
5、maven的归类依赖

  1.  
    <properties>
  2.  
    <springframework.version>2.5.6<springframework.version>
  3.  
    </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的更多相关文章

  1. 漫画:工作这么多年,你居然不知道 Maven 中 Optional 和 Exclusions 的区别?

    欢迎关注笔者的公众号: 小哈学Java, 专注于推送 Java 领域优质干货文章!! Maven 依赖排除(Exclusions) 因为 Maven 构建项目具有依赖可传递的特性,当你在 pom.xm ...

  2. Maven 中 dependencyManagement 元素,知识点

    Maven 提供的 dependencyManagement 元素既能让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性.在 dependencyManagement 元素下的依赖声明不会 ...

  3. Maven pom.xml中的元素modules、parent、properties以及import

    前言 项目中用到了maven,而且用到的内容不像利用maven/eclipse搭建ssm(spring+spring mvc+mybatis)用的那么简单:maven的核心是pom.xml,那么我就它 ...

  4. Maven pom.xml中的元素modules、parent、properties以及import(转)

    前言 项目中用到了maven,而且用到的内容不像利用maven/eclipse搭建ssm(spring+spring mvc+mybatis)用的那么简单:maven的核心是pom.xml,那么我就它 ...

  5. Maven中的parent定义的dependency,其中继承者是可以直接使用parent中的Maven Dependencies的。

    Maven中的parent定义的dependency,其中继承者是可以直接使用parent中的Maven Dependencies的. packagin要选择jar,parent project要选择 ...

  6. maven中 pom.xml与properties等配置文件之间互相读取变量

    问题由来: 最近公司的maven项目需要改进,希望把该项目依赖的一系列artifact放到properties文件中,这样做的目的是是为了很容易看到四月份release和七月份的release,它们所 ...

  7. Maven中pom.xml文件的配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. Maven中的配置文件

    <span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...

  9. maven中的pom配置文件标签的详细介绍

    <span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...

  10. maven中pom.xml标签介绍

    pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以 ...

随机推荐

  1. springcloud11 spring cloud config

    1.spring cloud config是什么 官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.2.1.RE ...

  2. SQLSERVER 语句交错引发的死锁研究

    一:背景 1. 讲故事 相信大家在使用 SQLSERVER 的过程中经常会遇到 阻塞 和 死锁,尤其是 死锁,比如下面的输出: (1 row affected) Msg 1205, Level 13, ...

  3. 原生微信小程序的一些注意点

    1.微信小程序的数据更新 Page({ // 响应式的数据定义在data里面 data: { bannerList: [] }, // 微信小程序的数据更新是在setData里面做的 this.set ...

  4. RabbitMQ基础和解疑

    一.基础概念 1. Producer:生产者,就是投递消息的一方 消息一般可以包含2个部分:消息体和标签(Label).消息体也可以称之为payload,在实际应用中,消息体一般是一个带有业务逻辑结构 ...

  5. node.js 历史版本下载

    https://nodejs.org/zh-cn/download/releases/

  6. 四川九联代工M301H hi3798 mv300 mt7668魔百和 强刷和TTL线刷(救砖)经验分享

    以下都是本次自己操作后的一些经验,不是技术分享,也是看来很多水教程后总结的精华. 四川九联代工M301H hi3798 mv300 mt7668魔百和  一.强刷 1.强刷的教程网上有很多,自己百度. ...

  7. GeoServer发布MySQL空间数据

    1. 概述 MySQL是常用的关系型数据库,MySQL遵从OpenGIS联盟(OGC)的规范,实施了空间扩展,更详细的信息可以参考: MySQL :: MySQL 8.0 Reference Manu ...

  8. Angular UI库

    1.angular 使用 bootstrap 安装bootstrap npm install bootstrap --save 安装bootstrap-icons npm i bootstrap-ic ...

  9. FTP调优

    最近在解决客户的问题时接触到了一些FTP的问题,自己在使用过程中发现了很多问题,所以这里总结了一些调优的办法: 服务:vsftp 非常安全文件传输 配置文件:/etc/vsftpd/vsftpd.co ...

  10. (2) 使用phpstudy 实现局域网内远程访问本地ThreeJS示例

    1 下载phpStudy  作为本地开发服务器 hpStudy下载后解压安装.安装完成后启动服务.如下: 2 打开phpStudy的安装目录,进入到安装目录的   PHPTutorial \  WWW ...