精华内容
下载资源
问答
  • Maven依赖优化

    2020-11-11 16:21:19
    虽然说对于项目的运行没有什么障碍,但是对于后期的jar依赖的版本维护会很痛苦的,每次改升级某个JAR包版本的时候,还需要全局搜索并依次修改其版本。可想而知,这种方法是最笨且失误率是最大的。 Maven依赖优化 ...
    前言

    先谈谈自身的项目经验,每次在接手二次开发项目的时候,笔者都能发现一个明显却又广泛被忽视的问题:maven依赖很杂乱,甚至多有冗余的嫌疑;虽然说对于项目的运行没有什么障碍,但是对于后期的JAR依赖的版本维护会很痛苦的,每次升级某个依赖版本的时候,还需要全局搜索并依次修改其版本。可想而知,这种方法是最笨且失误率是最大的。

    Maven依赖优化
    排除无用重复的基础JAR包

    每个jar包可能会依赖多个基础jar包,在工程中可能存在不同的jar包的基础jar相互重复,也就是我们经常见到的omitted for duplicate,这种情况可能会影响工程的正常启动;严重的会使JAR提供的功能丧失。所以排除无用重复的JAR包是很有必要的。

    • 举个栗子,类似灰色的JAR都是重复的
      在这里插入图片描述

    • 真实案例场景分析

    笔者在某次集成redis的时候,发现一旦接入redis依赖,系统的日志都没有了;经过一番排查,最终发现是日志JAR包冗余了,于是乎移除redis中的日志基础依赖,系统日志就自然出来,这就是上述笔者提到的,严重的会影响系统某一项基础功能。

    • JAR排除的解决方案
      <dependency>
                <groupId>com.alibaba.eagleeye</groupId>
                <artifactId>spring-data-redis</artifactId>
                <version>1.7.4-SNAPSHOT</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>jcl-over-slf4j</artifactId>
                    </exclusion>
                </exclusions>
      </dependency>
    
    声明全局的JAR版本依赖
    • 首先在父工程中声明JAR版本
    <properties>
           <dozer.version>5.5.1</dozer.version>
    </properties>
    
      <dependency>
           <groupId>net.sf.dozer</groupId>
           <artifactId>dozer</artifactId>
           <version>${dozer.version}</version>
      </dependency>
    
    • 在子工程中依赖JAR包,无须带Version即可
     <dependency>
          <groupId>net.sf.dozer</groupId>
          <artifactId>dozer</artifactId>
     </dependency>
    
    总结

    项目的技术栈可以千变万化,但是好的编码规范却是值得沿用的!

    展开全文
  • Maven 依赖机制

    2019-10-28 16:08:42
    Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级。 Log4j 作为项目的日志,作为例子。 传统方式 访问 http://logging.apache.org/log4j/ 下载 Log4j 的 jar 库 复制 jar 到项目类路径 手动将...

    Maven 依赖机制(三)

    在 Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级

    • Log4j 作为项目的日志,作为例子。

    传统方式

    • 访问 http://logging.apache.org/log4j/
    • 下载 Log4j 的 jar 库
    • 复制 jar 到项目类路径
    • 手动将其包含到项目的依赖
    • 所有的管理需要一切由自己做
    • 如果有 Log4j 版本升级,则需要重复上述步骤一次。

    Maven 的方式

    • 你需要知道 log4j 的 Maven 坐标,例如:
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
    
    • 它会自动下载 log4j 的 1.2.17 版本库
    • 声明 Maven 的坐标转换成 pom.xml 文件
    <dependencies>
        <dependency>
    	<groupId>log4j</groupId>
    	<artifactId>log4j</artifactId>
    	<version>1.2.17</version>
        </dependency>
    </dependencies>
    
    • 当 Maven 编译或构建,log4j 的 jar 会自动下载,并把它放到 Maven 本地存储库

    • 所有由 Maven 管理

    解释说明

    看看有什么不同?那么到底在 Maven 发生了什么?当建立一个 Maven 的项目,pom.xml 文件将被解析,如果看到 log4j 的 Maven 坐标,然后 Maven 按此顺序搜索 log4j 库:

    • 在 Maven 的本地仓库搜索 log4j
    • 在 Maven 中央存储库搜索 log4j
    • 在 Maven 远程仓库搜索 log4j(如果在 pom.xml 中定义)
    • Maven 依赖库管理是一个非常好的工具,为您节省了大量的工作
    展开全文
  • Maven依赖机制

    2016-07-27 14:17:29
    Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级。案例分析让我们看一个案例研究,以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么?传统方式 访问 ...

    在 Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级。

    案例分析

    让我们看一个案例研究,以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么?

    传统方式

    • 访问 http://logging.apache.org/log4j/
    • 下载 Log4 j的 jar 库
    • 复制 jar 到项目类路径
    • 手动将其包含到项目的依赖
    • 所有的管理需要一切由自己做

    如果有 Log4j 版本升级,则需要重复上述步骤一次。

    Maven方式

    • 你需要知道 log4j 的 Maven 坐标,例如:
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.14</version>
    • 它会自动下载 log4j 的1.2.14 版本库。如果“version”标签被忽略,它会自动升级库时当有新的版本时。
      声明 Maven 的坐标转换成 pom.xml 文件。
    <dependencies>
        <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
        </dependency>
    </dependencies>
    • 当 Maven 编译或构建,log4j 的 jar 会自动下载,并把它放到 Maven 本地存储库
    • 所有由 Maven 管理

    说明

    看看有什么不同?那么到底在Maven发生了什么?当建立一个Maven的项目,pom.xml文件将被解析,如果看到 log4j 的 Maven 坐标,然后 Maven 按此顺序搜索 log4j 库:

    1. 在 Maven 的本地仓库搜索 log4j
    2. 在 Maven 中央存储库搜索 log4j
    3. 在 Maven 远程仓库搜索 log4j(如果在 pom.xml 中定义)

    如何找到 Maven 坐标?
    - 访问 Maven 中心储存库,搜索下载您想要的jar。

    展开全文
  • maven依赖管理

    2015-03-19 14:37:23
    如果将这些依赖都放置在项目的pom.xml 中,在遇到依赖升级的时候,我们调整一下项目的pom.xml 里的依赖版本号,就可以让子模块自动升级依赖。 依赖管理很简单,就是在dependencis 元素上包一层dependencyMan...

    项目的依赖还有一个特性就是依赖管理(Dependency Management)

    如果我们有一个项目,包含多个子模块,而这些子模块可能都需要用到共同的依赖,

    如果将这些依赖都放置在项目的pom.xml 中,在遇到依赖升级的时候,我们调整一下项目的pom.xml 里的依赖版本号,就可以让子模块自动升级依赖。

    依赖管理很简单,就是在dependencis 元素上包一层dependencyManagement,然后各个子模块只需要声明依赖的groupId 和artifactId,不需要指明版本号,Maven 会自动从项目pom.xml 的dependencyManagment 获取。

     

    这里有一个说明,不少程序员将项目用到的所有依赖都声明在pom.xml 中,然后使用依赖管理,各个子模块进行引用。这种做法其实并不太好:首先项目的pom.xml 很长,都是依赖,阅读和查找都很麻烦。

    第二是场景,如在项目pom.xml添加servlet-api依赖,远不如在web module中添加更直接。最后还是声明一下,多个模块通用的依赖,放在项目pom.xml中是合适的,

    当然如果这样,直接使用dependencies继承也是可以的,具体的操作还是希望各个项目衡量一下,不能一刀切。

     

    这里介绍一个在父项目中的根结点中声明dependencyManagement和dependencies的区别

    dependencyManagement

    Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。使用pom.xml 中的dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。

    Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用在这个dependencyManagement 元素中指定的版本号。

     

    例如在父项目里:

    <dependencyManagement>  
    <dependencies>  
    <dependency>  
    <groupId>mysql</groupId>  
    <artifactId>mysql-connector-java</artifactId>  
    <version>5.1.2</version>  
    </dependency>  
    ...  
    <dependencies>  
    </dependencyManagement>  

     

    然后在子项目里就可以添加mysql-connector时可以不指定版本号,例如:

    <dependencies>  
    <dependency>  
    <groupId>mysql</groupId>  
    <artifactId>mysql-connector-java</artifactId>  
    </dependency>  
    </dependencies>  

     

    这样做的好处就是:如果有多个子项目都引用同一个依赖,则可以避免在每个子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改 ;另外如果某个子项目需要另外的一个版本,只需要声明version就可。

     

    dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖

     

    dependencies相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,

    并默认被所有的子项目继承。

    展开全文
  • Maven的依赖机制

    2017-09-19 16:07:25
    Maven依赖机制的帮助下自动下载所有必要的依赖库,并保持升级。 案例分析:比如项目需要使用Log4j作为项目的日志 传统方式: 访问 http://logging.apache.org/log4j/ 下载 Log4 j的 jar 库 复制 jar 到...
  • idea解决maven依赖冲突

    2020-06-19 16:25:25
    最近在一个老spring项目上面需要适配一个新功能,过程中也需要升级spring的版本,然后最后就导致maven的依赖包很乱,同一个包存在多个版本,本文就记录下使用idea解决maven的依赖冲突,同时记录下assembly打包插件的...
  • Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级。 案例分析 让我们看一个案例研究,以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么? 1.在传统方式 访问...
  • 六、Maven依赖机制

    千次阅读 2015-11-17 12:27:14
    Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级。 案例分析 让我们看一个案例研究,以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么? 1.在传统方式 ...
  • maven依赖查找小工具

    2020-10-31 23:28:27
    尤其产品安全较为严格的项目,每个引入的依赖都是严格限制的,开源软件使用需要申请并分析安全漏洞,版本升级需要重新申请,那么发布的时候如何知道我所使用的就是申请的那些呢? 1.解决办法 首先使用命令将依赖打印...
  • Maven依赖机制(七)

    2017-04-22 09:56:29
    Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级。 案例分析 让我们看一个案例研究,以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么? 1.在传统方式 ...
  • 升级ant配置文件(关于copy maven依赖jar),如何优雅自动copy scope为systemjar   (注:这个文档需要 ant和maven基础知识)   (不想看废话,直接跳最后面看结论)   ant发布时候copy lib,公司架构师...
  • Maven传递依赖1.背景最近公司在搞版本...在修改多模块项目时候涉及到client版本调整,这个时候就需要升级version版本。这个时候是否通知依赖方升级client版本而引发问题。2.问题本地搭建工程验证maven对统...
  • maven导出项目依赖

    2019-07-06 13:27:47
    @[toc]maven导出项目依赖 ...有时候我们功能更新之后引入了新的依赖需要对现场程序进行增量升级。 导出项目依赖的jar mvn dependency:copy-dependencies -DoutputDirectory=<导出的目录> ...
  • 最近在开发中遇到一个疑问,开发阶段的依赖中往往更改一小丁点东西都需要升级版本发布,十分繁琐。 对此查了很多资料,国内的资料十分有限,看来国内还很少有朋友遇到这个问题,大家应该都是使...
  • 于是下决心要解决这个问题,原本想通过在公司的Maven私服上只保存有我们需要的jar包即可,可是总觉得这样不够灵活和优雅,而且将来很可能要升级jar包,而且要保持旧jar包,所以觉得还是采用可以配置方法,原本...
  • 最近在开发中遇到一个疑问,开发阶段的依赖中往往更改一小丁点东西都需要升级版本发布,十分繁琐。  对此查了很多资料,国内的资料十分有限,看来国内还很少有朋友遇到这个问题,大家应该都是使用升级版本更新...
  • Maven的依赖机制会自动下载需要的依赖关系类库,并且很有好的维护版本升级 例子研究假设你想在项目的日志机制中使用Log4j(实际上我更喜欢SLF4J),这是你需要做的 1.对于传统的方式 1.访问...
  • MAVEN的项目升级

    2017-04-21 00:44:00
    今天我们来介绍一下版本依赖的问题 ...以及core的版本是根据版本号来的,这也是我们每一次升级的时候,我们都需要升级项目 的版本,我们对项目一般都是增加操作,一般不使用减法操作。 2.如果我们在上线...
  • Maven依赖机制

    2017-10-21 17:26:27
    假设你想使用 Log4j 作为项目的日志。这里你要做什么? 一、传统方式 ...4. 手动将其包含到项目的依赖 5. 所有的管理需要一切由自己做 如果有 Log4j 版本升级,则需要重复上述步骤一次。 二、
  • Maven 多项目依赖版本管理(Maven Multi Project version management)访问我个人网站...每一个项目都需要添加自己版本,还要互相比对,每次升级一些第三方依赖需要修改所有文件,于是产生了自己写parent想法。2
  • 如果现在jar包C需要升级,比如从1.0升级到2.0,但是我又没有jar包B源代码。1)我可以直接升级jar包C吗?2)jar包B在pom文件中指定依赖1.0版本,现在升级jar包C到2.0版本了,启动tomcat时候jar包Bpom依赖会不会...
  • Maven_统一管理依赖的版本号

    千次阅读 2018-05-25 16:46:54
    如果需要统一升级为4.1.1,怎么办?手动在pom.xml中逐一修改是不可靠!!! 可靠配置方式: 使用&lt;properties&gt;标签内使用 自定义标签 统一声明版本号 &lt;properties&gt; &lt;atguigu....
  • maven】--依赖机制

    热门讨论 2017-12-10 09:54:50
    Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级。让我们看一个案例研究,以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么? 1.在传统方式 访问 ...
  • 假设你想使用 Log4j 作为项目的日志。这里你要做什么?...4. 手动将其包含到项目的依赖 5. 所有的管理需要一切由自己做 如果有 Log4j 版本升级,则需要重复上述步骤一次。 二、Maven方式 1. 你需要
  • BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号。BOM的维护方负责版本升级,并保证BOM中...
  • ar包重复依赖 造成版本号重复依赖 ...例如在父pom文件中定义好我们需要的全部jar:   &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;junit&lt;/groupId&gt;

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 274
精华内容 109
关键字:

maven依赖的依赖需要升级