依赖原则:解决模块工程之间的Jar冲突问题

1):情定设定:验证路径最短者优先原则

创建三个工程如下:

Hello:并且以来 log4j.1.2.17.jar

HelloFriend:依赖了工程 Hello,按理说HelloFriend也会间接的依赖了 log4j.1.2.17.jar  但是由于一些特殊原因 明确声明了 为  .14 的jar

MakeFriends:依赖了 HelloFriend ,大家一开始以为会间接的会依赖两个 jar。实际MakeFriends 只能依赖一个。(寻址一个路径最近的)

2):情定设定:路径相同时先声明者优先

创建三个工程如下:

HelloFriend:依赖 log4j.1.2.14

OurFriends:依赖 log4j.1.2.17

MakeFriends:分别引用依赖,HelloFriend 与 OurFriends

这里的 "声明" 的先后顺序指的是 dependency  标签配置的先后顺序

 3):同一版本号

这里的版本统一为4.0的(如果统一版本号怎么办那?)

配置方式:如下(使用 properties 自定义同一版本号)

使用 ${ atguigu.spring.version }

4):继承

现状:Hello 依赖的 junit :4.0

   HelloFriend 依赖的 junit:4.0

   MakeFriends 依赖的 junit:4.9

需求:统一管理各个模块工程中对 junit 依赖的版本

解决思路:将 junit 依赖统一提取到 ” 父 “ 工程中,在子工程声明 junit 依赖时不指定版本。

        以父工程中统一设定的为准。

操作步骤:

1、创建一个 Maven 工程作为父工程,注意:打包方式为 Pom

2、在子工程中声明对父工程的引用

3、将子工程的坐标中与父工程坐标中重复的内容删除

 

4、在父工程中统一 junit 的依赖

5、在子工程中删除 junit 依赖的版本号部分。

注意:配置集成后,执行安装(初始化到本地)命令时先要安装父工程。

5):聚合

作用:一键安装各个模块工程

配置方式:在一个 总的聚合工程 中配置各个参与聚合的模块

分享知识-快乐自己:Maven 相关原理的更多相关文章

  1. maven 工作原理和添加jar包技巧

        相 信只要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量,一个 build.xml 能够完成编译.测试.打包.部署等很多 ...

  2. Maven 核心原理

    Maven 核心原理 标签 : Java基础 Maven 是每一位Java工程师每天都会接触的工具, 但据我所知其实很多人对Maven理解的并不深, 只把它当做一个依赖管理工具(下载依赖.打包), M ...

  3. maven 相关

    maven相关 一 windows安装配置maven: 1. 官网下载最新版本maven,发布日志时为: maven3.2.1 2.解压maven到相应的目录:配置环境变量: MAVEN_HOME:D ...

  4. Maven学习总结(19)——深入理解Maven相关配置

    MAVEN2的配置文件有两个settings.xml和pom.xml settings.xml:保存的是本地所有项目所共享的全局配置信息,默认在maven安装目录的conf目录下,如果没有安装mave ...

  5. 5.Maven和Eclipse整合(两种方式进行插件的安装),Maven相关设置,Eclipse下创建Maven项目

     1  第一种方式是:在连网的情况下.通过在helpàInstall下安装. 新的地址是:http://download.eclipse.org/technology/m2e/releases 2 ...

  6. Maven - 工作原理

    章节 Maven – 简介 Maven – 工作原理 Maven – Repository(存储库) Maven – pom.xml 文件 Maven – 依赖管理 Maven – 构建生命周期.阶段 ...

  7. 常见的GAN网络的相关原理及推导

    常见的GAN网络的相关原理及推导 在上一篇中我们给大家介绍了GAN的相关原理和推导,GAN是VAE的后一半,再加上一个鉴别网络.这样而导致了完全不同的训练方式. GAN,生成对抗网络,主要有两部分构成 ...

  8. 分享知识-快乐自己:解决 Maven 无法下载 fastdfs-client-java 依赖。

    因为fastdfs-client-java-1.27-SNAPSHOT.jar这个依赖包在maven中央仓库是没有的. 需要自己编译源码成jar本地安装到maven 的本地仓库,安装完以后就能正常引用 ...

  9. 分享知识-快乐自己:Liunx—Maven 部署步骤

    第一步: 点我下载 Liunx—Maven Linux命令下载:wget [下载文件存放路径]   [下载文件地址] 第二步: 上传 Maven 并解压到 指定的目录:(上传方式 xftp 或 rz ...

随机推荐

  1. 下载并导出数据到execl中

    下载poi-3.6-20091214.jar.下载地址例如以下: http://download.csdn.net/detail/evangel_z/3895051 1.jsp <button ...

  2. DMP

    1.dmp-data mabagement platform数据管理平台 数据赋能,营销智变 2.定义 把分散的第一,第三方异构.多源数据进行整合,然后纳入统一技术平台中,并对这些数据进行标准化和细分 ...

  3. spring boot集成activemq

    spring boot集成activemq 转自:https://blog.csdn.net/maiyikai/article/details/77199300

  4. 推荐扔物线的HenCoder Android 开发进阶系列 后期接着更新

    官网地址:http://hencoder.com/ 我来做一次辛勤的搬运工 HenCoder:给高级 Android 工程师的进阶手册 HenCoder Android 开发进阶: 自定义 View ...

  5. java代码实现目录结构

    今天用java代码来实现.像我们电脑盘符那样的目录结构.在代码开始之前首先.介绍一下.用.java代码实现目录的思想. 第一步:完成基础的.大家想.我们是如何获取文件的.是不是用File类,直接就获取 ...

  6. [Android Studio 权威教程]AS 中配置强大的版本号管理系统(Git、SVN、等)

    在Eclipse中加入Git等版本号管理工具须要自己加入插件.并且个人认为不咋好用,在AS中已经给我们集成好了,我们仅仅须要配置一下就OK了.今天就和大家聊聊怎么配置以及使用的要点. 1. 安装Git ...

  7. Linq实现between拓展

    先写一个拓展方法 static class Ext { public static IQueryable<TSource> Between<TSource, TKey> (th ...

  8. android菜鸟学习笔记22----ContentProvider(二)ContentObserver的简单使用

    现在有这样一个应用A通过ContentProvider提供自己的数据给其他应用,应用B通过ContentResolver获取应用A中提供的数据,并将其展示在ListView中,而应用C通过Conten ...

  9. mybatis相关

    1 namespace dao中使用namespace+id一起来完成对mapper中sql statement的调用. 2 关于resultMap和parameterType parameterTy ...

  10. why factory pattern and when to use factory pattern

    1 factory pattern本质上就是对对象创建进行抽象 抽象的好处是显然的,可以方便用户去获取对象. 2 使用factory pattern的时机 第一,当一个对象的创建依赖于其它很多对象的时 ...