zoukankan      html  css  js  c++  java
  • Maven 知识点总结以及解决jar报冲突的几种方法

    1、常见的命令

    • Compile
    • Test
    • Package
    • Install
    • Deploy
    • Clean

    2、坐标的书写规范

    • groupId 公司或组织域名的倒序
    • artifactId 项目名或模块名
    • version 版本号

     3、如何添加坐标

    • 在本地仓库中搜索
    • 互联网上搜,推荐网址 http://www.mvnrepository.com/

    4、依赖范围

    • Compile
    • Test
    • Runtime
    • Provided

    5、依赖调解

    • 第一声明者优先原则

             我们会发现这两个 jar 包同时都依赖了 spring-beans,在 pom 文件定义依赖,先声明的依赖为准。 

            但是spring-webmvc 依赖 spirng-beans-4.2.4,spring-context 依赖 spring-beans-5.0.2,但是发现

            spirng-beans-4.2.4 加入到工程中 而我们希望 spring-beans-5.0.2 加入工程。这就造成了依赖冲突。解决依赖冲突有以下原则:

            测试:
            如果将上边 spring-webmvc 和 spring-context 顺序颠倒,系统将导入 spring-beans-5.0.2。
            分析:
            由于 spring-webmvc 在前边以 spring-webmvc 依赖的 spring-beans-5.0.2 为准,所以最终spring-beans-5.0.2 添加到了工程中。

    • 路径近者优先原则


      例如:还是上述情况,spring-contex 和 spring-webmvc 都会传递过来 spirng-beans,那如果直接把 spring-beans 的依赖直接写到 pom 文件中,那么项目就不会再使用其他依赖传递来的 spring-beans,因为自己直接在 pom 中定义 spring-beans要比其他依赖传递过来的路径要近。在本工程中的 pom 中加入 spirng-beans-5.0.2 的依赖,根据路径近者优先原则,系统将导入spirng-beans-5.0.2:
    • 排除依赖

             上边的问题也可以通过排除依赖方法辅助依赖调解,如下:
             比如在依赖 spring-webmvc 的设置中添加排除依赖,排除 spring-beans,
             下边的配置表示:依赖 spring-webmvc,但排除 spring-webmvc 所依赖的 spring-beans。

    6、版本锁定

      

             面对众多的依赖,有一种方法不用考虑依赖路径、声明优化等因素可以采用直接锁定版
             本的方法确定依赖构件的版本,版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定
             的版本的为准添加到工程中,此方法在企业开发中常用。
             如下的配置是锁定了 spring-beans 和 spring-context 的版本:

              可以把版本号提取出来,使用<properties>标签设置成变量。

             注意:在工程中锁定依赖的版本并不代表在工程中添加了依赖,如果工程需要添加锁定版本
             的依赖则需要单独添加<dependencies></dependencies>标签,如下:

             上边添加的依赖并没有指定版本,原因是已在<dependencyManagement>中锁定了版本,
             所以在<dependency>下不需要再指定版本。

  • 相关阅读:
    将博客搬至CSDN
    ActiveMQ 的可持久化(六)
    ActiveMQ之协议(五)
    ActiveMQ与Spring / SpringBoot 整合(四)
    ActiveMQ之JMS及保证消息的可靠性<持久化、事务、签收>(三)
    ActiveMQ部署和代码尝试(二)
    ActiveMQ初步安装使用(一)
    Redis之哨兵机制(五)
    Redis主从复制(读写分离)(四)
    Redis持久化(三)
  • 原文地址:https://www.cnblogs.com/Courage129/p/12715412.html
Copyright © 2011-2022 走看看