title: maven项目引入新依赖问题 tags:

  • Maven categories: 工作日志 date: 2017-05-25 18:18:55

前一篇描述过关于版本号没有写明确,写了release的产生的问题

slf4j 更新版本导致无日志输出

描述一下最近系统中出现的问题。

某一天开发环境突然出现了这种邮件

而正常如下

特别奇怪,为啥出现了主题不见了,内容好似乱码。

用浅薄的mail知识猜测大概是这个被当成附件发送了吧。

那么首先检查发送邮件的配置没有发生变化。其次发现了pom文件出现了变化,大概猜测问题出现在此。

小伙伴在引入新的构件的情况下比如

    <dependency><groupId>org.apache.axis2</groupId><artifactId>axis2-adb</artifactId><version>1.4</version></dependency>
复制代码

那么怀疑是否出现了maven仲裁导致之前依赖的某个jar版本发生了变化导致出现了此问题呢?

因此将两次生成的依赖

新的依赖

    activation-1.1.jar                              commons-pool2-2.4.2.jar                 jboss-logging-3.2.1.Final.jar  shiro-core-1.3.0.jar    annogen-0.1.0.jar                               core-3.2.1.jar                          jedis-2.7.3.jar                shiro-ehcache-1.3.0.jar    annotations-2.0.1.jar                           countUp.js-1.7.0.jar                    jgroups-3.6.6.Final.jar        shiro-quartz-1.3.0.jar    ant-1.7.0.jar                                   data-biz-model-1.0.23.jar               jline-0.9.94.jar               shiro-redis-2.4.2.1-RELEASE.jar    ant-launcher-1.7.0.jar                          data-biz-rmi-1.0.23.jar                 joda-time-2.9.3.jar            shiro-spring-1.3.0.jar    aopalliance-1.0.jar                             data-biz-vo-1.0.23.jar                  jpinyin-1.1.8.jar              shiro-web-1.3.0.jar    aspectjweaver-1.8.9.jar                         data-utility-1.0.23.jar                 jquery-raty-2.5.2.jar          slf4j-api-1.7.25.jar    axiom-api-1.2.7.jar                             dom4j-1.6.1.jar                         json-20090211.jar              spring-aop-3.2.8.RELEASE.jar    axiom-dom-1.2.7.jar                             dozer-5.2.0.jar                         json-lib-2.2.2-jdk15.jar       spring-beans-3.2.8.RELEASE.jar    axiom-impl-1.2.7.jar                            dubbo-2.5.3.jar                         jsp-api-2.2.jar                spring-context-3.2.8.RELEASE.jar    axis2-adb-1.4.jar                               ECharts-2.2.0.2.jar                     jstl-1.2.jar                   spring-context-support-3.2.8.RELEASE.jar    axis2-kernel-1.4.jar                            ehcache-2.10.1.jar                      kryo-shaded-3.0.0.jar          spring-core-3.2.8.RELEASE.jar    backport-util-concurrent-3.1.jar                ehcache-core-2.5.3.jar                  log4j-over-slf4j-1.7.7.jar     spring-data-redis-1.6.2.RELEASE.jar    bcprov-jdk15-1.45.jar                           ezmorph-1.0.4.jar                       logback-access-1.1.7.jar       spring-expression-3.2.8.RELEASE.jar    biz-mapper-1.0-SNAPSHOT.jar                     fastjson-1.2.24.jar                     logback-classic-1.1.7.jar      spring-jdbc-3.2.8.RELEASE.jar    biz-model-1.0-SNAPSHOT.jar                      fst-2.42.jar                            logback-core-1.1.7.jar         spring-security-core-4.2.1.RELEASE.jar    biz-rmi-1.0-SNAPSHOT.jar                        geronimo-activation_1.1_spec-1.0.1.jar  logback-ext-spring-0.1.4.jar   spring-tx-3.2.8.RELEASE.jar    biz-rmi-impl-1.0-SNAPSHOT.jar                   geronimo-javamail_1.4_spec-1.2.jar      mail-1.4.4.jar                 spring-web-3.2.8.RELEASE.jar    biz-schedule-1.0-SNAPSHOT.jar                   geronimo-jms_1.1_spec-1.1.jar           minlog-1.3.0.jar               spring-webmvc-3.2.8.RELEASE.jar    biz-service-1.0-SNAPSHOT.jar                    geronimo-stax-api_1.0_spec-1.0.1.jar    mybatis-3.3.0.jar              stax-api-1.0.1.jar    biz-service-impl-1.0-SNAPSHOT.jar               guava-18.0.jar                          mybatis-spring-1.2.3.jar       utility-1.0-SNAPSHOT.jar    biz-vo-1.0-SNAPSHOT.jar                         hibernate-validator-5.2.4.Final.jar     neethi-2.0.4.jar               validation-api-1.1.0.Final.jar    carzoneAgent-1.0.2.jar                          httpclient-4.4.jar                      netty-3.2.5.Final.jar          woden-api-1.0M8.jar    carzone-erp-api-supplychain-1.0.10-RELEASE.jar  httpcore-4.4.jar                        netty-3.7.0.Final.jar          woden-impl-dom-1.0M8.jar    carzone-erp-core-1.0.10-RELEASE.jar             httpcore-nio-4.0-beta1.jar              objenesis-2.1.jar              wsdl4j-1.6.2.jar    carzone-platform-exception-1.1.RELEASE.jar      j2cache-core-1.4.0.jar                  ognl-3.0.11.jar                wstx-asl-3.2.4.jar    carzone-platform-validate-2.1.RELEASE.jar       j2cache-shiro-1.0.2.jar                 okhttp-3.2.0.jar               xalan-2.7.0.jar    Chart.js-2.1.3.jar                              j2cache-spring-1.0.1.jar                okio-1.6.0.jar                 xercesImpl-2.8.1.jar    classmate-1.1.0.jar                             jackson-annotations-2.6.1.jar           optimist-1.2.0.jar             xml-apis-1.3.04.jar    commons-beanutils-1.8.3.jar                     jackson-core-2.6.1.jar                  pinyin4j-2.5.0.jar             xmlbeans-2.6.0.jar    commons-codec-1.9.jar                           jackson-core-asl-1.9.2.jar              poi-3.12.jar                   xmlParserAPIs-2.6.0.jar    commons-collections-3.2.1.jar                   jackson-databind-2.6.1.jar              poi-ooxml-3.12.jar             XmlSchema-1.4.2.jar    commons-fileupload-1.2.1.jar                    jackson-mapper-asl-1.9.2.jar            poi-ooxml-schemas-3.12.jar     zkclient-0.1.jar    commons-httpclient-3.1.jar                      java-sdk-3.13.jar                       quartz-1.6.1.jar               zookeeper-3.4.6.jar    commons-io-2.4.jar                              javassist-3.11.0.GA.jar                 quartz-all-1.6.1.jar    commons-lang-2.6.jar                            javassist-3.19.0-GA.jar                 rapid-core-4.0.jar    commons-logging-1.1.1.jar                       jaxen-1.1.1.jar                         reflections-0.9.10.jar复制代码

老的依赖

    activation-1.1.jar                             countUp.js-1.7.0.jar                 jgroups-3.6.6.Final.jar       quartz-1.6.1.jar    annotations-2.0.1.jar                          data-biz-model-1.0.23.jar            jline-0.9.94.jar              quartz-all-1.6.1.jar    aopalliance-1.0.jar                            data-biz-rmi-1.0.23.jar              joda-time-2.9.3.jar           rapid-core-4.0.jar    aspectjweaver-1.8.9.jar                        data-biz-vo-1.0.23.jar               jpinyin-1.1.8.jar             reflections-0.9.10.jar    bcprov-jdk15-1.45.jar                          data-utility-1.0.23.jar              jquery-raty-2.5.2.jar         shiro-core-1.3.0.jar    biz-mapper-1.0-SNAPSHOT.jar                    dozer-5.2.0.jar                      json-20090211.jar             shiro-ehcache-1.3.0.jar    biz-model-1.0-SNAPSHOT.jar                     dubbo-2.5.3.jar                      json-lib-2.2.2-jdk15.jar      shiro-quartz-1.3.0.jar    biz-rmi-1.0-SNAPSHOT.jar                       ECharts-2.2.0.2.jar                  jsp-api-2.2.jar               shiro-redis-2.4.2.1-RELEASE.jar    biz-rmi-impl-1.0-SNAPSHOT.jar                  ehcache-2.10.1.jar                   jstl-1.2.jar                  shiro-spring-1.3.0.jar    biz-schedule-1.0-SNAPSHOT.jar                  ehcache-core-2.5.3.jar               kryo-shaded-3.0.0.jar         shiro-web-1.3.0.jar    biz-service-1.0-SNAPSHOT.jar                   ezmorph-1.0.4.jar                    log4j-1.2.16.jar              slf4j-api-1.7.25.jar    biz-service-impl-1.0-SNAPSHOT.jar              fastjson-1.2.24.jar                  logback-access-1.1.7.jar      spring-aop-3.2.8.RELEASE.jar    biz-vo-1.0-SNAPSHOT.jar                        fst-2.42.jar                         logback-classic-1.1.7.jar     spring-beans-3.2.8.RELEASE.jar    carzoneAgent-1.0.2.jar                         guava-18.0.jar                       logback-core-1.1.7.jar        spring-context-3.2.8.RELEASE.jar    carzone-erp-api-supplychain-1.0.9-RELEASE.jar  hibernate-validator-5.2.4.Final.jar  logback-ext-spring-0.1.4.jar  spring-context-support-3.2.8.RELEASE.jar    carzone-erp-core-1.0.9-RELEASE.jar             httpclient-4.4.jar                   mail-1.4.4.jar                spring-core-3.2.8.RELEASE.jar    carzone-platform-exception-1.1.RELEASE.jar     httpcore-4.4.jar                     minlog-1.3.0.jar              spring-data-redis-1.6.2.RELEASE.jar    carzone-platform-validate-2.1.RELEASE.jar      j2cache-core-1.4.0.jar               mybatis-3.3.0.jar             spring-expression-3.2.8.RELEASE.jar    Chart.js-2.1.3.jar                             j2cache-shiro-1.0.2.jar              mybatis-spring-1.2.3.jar      spring-jdbc-3.2.8.RELEASE.jar    classmate-1.1.0.jar                            j2cache-spring-1.0.1.jar             netty-3.2.5.Final.jar         spring-security-core-4.2.1.RELEASE.jar    commons-beanutils-1.8.3.jar                    jackson-annotations-2.6.1.jar        netty-3.7.0.Final.jar         spring-tx-3.2.8.RELEASE.jar    commons-codec-1.9.jar                          jackson-core-2.6.1.jar               objenesis-2.1.jar             spring-web-3.2.8.RELEASE.jar    commons-collections-3.2.1.jar                  jackson-core-asl-1.9.2.jar           ognl-3.0.11.jar               spring-webmvc-3.2.8.RELEASE.jar    commons-fileupload-1.2.1.jar                   jackson-databind-2.6.1.jar           okhttp-3.2.0.jar              stax-api-1.0.1.jar    commons-httpclient-3.1.jar                     jackson-mapper-asl-1.9.2.jar         okio-1.6.0.jar                utility-1.0-SNAPSHOT.jar    commons-io-2.4.jar                             java-sdk-3.13.jar                    optimist-1.2.0.jar            validation-api-1.1.0.Final.jar    commons-lang-2.6.jar                           javassist-3.11.0.GA.jar              pinyin4j-2.5.0.jar            xmlbeans-2.6.0.jar    commons-logging-1.1.1.jar                      javassist-3.19.0-GA.jar              poi-3.12.jar                  zkclient-0.1.jar    commons-pool2-2.4.2.jar                        jboss-logging-3.2.1.Final.jar        poi-ooxml-3.12.jar            zookeeper-3.4.6.jar    core-3.2.1.jar                                 jedis-2.7.3.jar                      poi-ooxml-schemas-3.12.jar复制代码

比较后发现有个

geronimo-javamail_1.4_spec-1.2.jar的组件比较奇怪(问为什么?哈哈 经验呗)
复制代码

通过查看依赖

证实该jar是被

axis2-adb构建引入
复制代码

发现该jar包含

javax.mail.internet.MimeMultipart


复制代码

而java-mail同样包含

疑问如下:

  1. 那么原先使用的是java-mail为啥这两个jar没有被maven的仲裁(理解成法官就好了)裁判呢?(maven只会针对GA相同的构建进行依赖仲裁,而且并不是选择版本最高的构建是选择路径最短的构建进行应用)
  2. 为啥java加载的是geronimo-javamail的而不是mail呢,这个涉及到tomcat classloader的加载机制

当应用需要到某个类时,则会按照下面的顺序进行类加载

  1 使用bootstrap引导类加载器加载

  2 使用system系统类加载器加载

  3 使用应用类加载器在WEB-INF/classes中加载

  4 使用应用类加载器在WEB-INF/lib中加载

  5 使用common类加载器在CATALINA_HOME/lib中加载

那么同样lib下面的是以排序为准(不同机器不同系统排序可能会不一样)

因此在引入新的构建的情况下需要摸清楚依赖是否必须,是否部分需要排除(最常见的就是servlet的jar,可以通过scope配置)

因此总结知识点如下:

  1. maven仲裁
  2. 构件scope
  3. tomcat类加载机制

在引入构件的时候需要注意一下是否影响到了原来组件版本(比如仲裁后版本变化),需要对比一下前后jar版本等等。

修改如下

好习惯值得拥有:尽量定义 dependencyManagement 通过该元素管理依赖事半功倍

maven项目引入新依赖问题相关推荐

  1. (转)通过maven,给没有pom文件的jar包生成pom文件,maven项目引入本地jar包

    文章完全转载自 : https://blog.csdn.net/qq_31289187/article/details/81117478 问题一: 经常遇到公司私服或者中央仓库没有的jar包,然后通过 ...

  2. IDEA引MAVEN项目jar包依赖导入问题解决

    IDEA引MAVEN项目jar包依赖导入问题解决 参考文章: (1)IDEA引MAVEN项目jar包依赖导入问题解决 (2)https://www.cnblogs.com/a8457013/p/781 ...

  3. IDEA maven项目中刷新依赖的两种方法

    前言 IDEA maven项目中刷新依赖分为自动刷新 和 手动刷新 两种! 自动刷新: File-Settings 手动刷新:

  4. maven项目引入三方jar包

    Maven项目引入三方jar包 前提: 在项目开发过程中,难免会用到第三方jar的时候,比如:sdk.或者特定的jar包(不在maven仓库中),这种情况下,我们怎么在项目中直接使用,并且使用mave ...

  5. maven项目(引入依赖失败, pom.xml 报错\爆红)

    ☺ 引入项目过程中,idea引入磁盘的某个的maven项目 这里以springboot项目以例子,发现pom.xml 的依赖大面积爆红,springboot的版本依赖也报错了,然后发现下面有进度条在下 ...

  6. Maven项目中的依赖管理——dependencyManagement

    在使用 Maven 创建多模块项目的时候,在父项目的 pom 文件中经常会碰见 <dependencyManagement> 标签的使用,比如如下代码: <dependencyMan ...

  7. maven项目中 把依赖的jar包一起打包

    2019独角兽企业重金招聘Python工程师标准>>> Maven1-HelloWorld简单入门 使用Maven Assembly plugin将依赖打包进jar 1.pom.xm ...

  8. maven项目查询jar依赖的网址

    通过官网:http://mvnrepository.com/,或者:https://search.maven.org/ 在搜索栏中输入想要引入的依赖group id或者artifact id名称, 如 ...

  9. idea 父文件_IDEA中Maven项目父子工程依赖

    1.写在前面 假设一个Maven项目(这里是一个SSM整合项目)他的构造布局如下: 话不多说,直接上图: 这个项目存在父子工程(这里删掉了父工程的src文件夹,为了使项目可读性更高) 这里的子模块da ...

最新文章

  1. Android开发之工厂模式初探
  2. php json_encode 后直接复制给js怎么调用,如何将数组从php(使用json_encode)传递给javascript...
  3. python 创建txt文件并写入字符串-python创建txt文件
  4. Git log高级用法
  5. ArrayDeque中的取余
  6. [转]一个总成本花费100W的失败项目的小小反省
  7. 互联网经济与实体经济
  8. Lambda表达式练习3【应用】
  9. 第二十四期:揭秘:为什么电脑越用越卡 大型破案现场
  10. golang 操作日期_使用Godate在Golang中轻松进行日期操作
  11. 轻松在阿里云上搭建Redis
  12. vue aplayer 进度条无法拖动_「最近项目小结」使用Vue实现一个简单的鼠标拖拽滚动效果插件...
  13. AI何时能懂环境会沟通?别急,这个“你说我画”小游戏开了个好头 | 论文
  14. 采购中的高级分析方法
  15. hadoop fs ,hadoop dfs 和 hdfs dfs的区别以及HDFS的shell操作
  16. python黑网站充值_Python黑帽子:Windows系统提权
  17. SPSS26没有典型相关性分析怎么办
  18. WLAN/WIFI信道列表 2020-11-23
  19. php7 slowlog,php7: php-fpm seems busy提示
  20. CocosCreator之Tween缓动动画

热门文章

  1. C语言之文件读写探究(一):fopen、fclose(文件的打开和关闭)
  2. oracle调用MySQL函数,Oracle的INSTR函数MySQL实现
  3. python with关键字_python中用with关键字来实现上下文管理器.
  4. vuex commit 模块_Vuex详细介绍
  5. centeros6.8 mysql_Center os6.5 mysql
  6. python 员工考勤_用python写的考勤自动打卡程序
  7. 利用逆矩阵解线性方程组_线性代数入门——矩阵方程简介及一类基本矩阵方程的解法...
  8. linux如何安装网卡驱动6,详解CentOS 6.5如何安装Realtek无线网卡驱动
  9. java 日志接收服务器_Java SMTP 发信收不到, 日志显示服务器接收了
  10. python-packaging 命令行脚本