zoukankan      html  css  js  c++  java
  • api重复引用导致的诡异问题排查

    api重复引用导致的诡异问题排查

    最近一个项目上线前开发环境、测试环境都能正常打包并运行。然而到了准生产环境和生产环境则报一些诡异的错误信息:

    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project xxx: Compilation failure: Compilation failure:
    [ERROR] /data/release/xxx/xxx/src/main/java/com/xxx/testmodel/util/ZipRsaCiph.java:[19,15] BASE64Decoder is internal proprietary API and may be removed in a future release
    [ERROR] /data/release/xxx/xxx/src/main/java/com/xxx/testmodel/util/ZipRsaCiph.java:[19,15] BASE64Decoder is internal proprietary API and may be removed in a future release
    [ERROR] /data/release/xxx/xxx/src/main/java/com/xxx/testmodel/util/ZipRsaCiph.java:[19,15] BASE64Decoder is internal proprietary API and may be removed in a future release
    [ERROR] /data/release/xxx/xxx/src/main/java/com/xxx/testmodel/util/ZipRsaCiph.java:[19,15] BASE64Decoder is internal proprietary API and may be removed in a future release
    [ERROR] /data/release/xxx/xxx/src/main/java/com/xxx/testmodel/util/ZipRsaCiph.java:[64,9] BASE64Decoder is internal proprietary API and may be removed in a future release
    [ERROR] /data/release/xxx/xxx/src/main/java/com/xxx/testmodel/aop/Author.java:[95,90] error: cannot find symbol
    [ERROR] -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
    [ERROR]
    [ERROR] After correcting the problems, you can resume the build with the command
    

    咋一看莫名其妙,代码怎么找也找不到问题所在。查看代码修改部分,发现是重新引入了一个新的api。

    通过mvn dependency:tree发现,同时引用了 test-api:jar:2.0.0 和 test-api:jar:3.12.0 两个版本的api。

    而通过mvn dependency:analyze查看的结果为:

    [WARNING] Used undeclared dependencies found:
    [WARNING]    com.xxx.auth:xxx-api:jar:2.0.0:compile
    [WARNING] Unused declared dependencies found:
    [WARNING]    com.xxx.auth:xxx-api:jar:3.12.0:compile
    

    发现并没有引用新的api。
    Used undeclared dependencies :指那些在项目中直接使用到的,但没有在POM中配置的依赖。
    Unused declared dependencies :供我们参考,这表示那些我们配置了,但并未直接使用的依赖。

    后来分析发现是有个第三方 api 引用了相同的api,从而导致这一诡异问题的出现。因而在引用api前可通过:

    mvn dependency:treemvn dependency:analyze 看是否存在重复引用的api,如果存在重复引用的情况可将不需要的版本api排除掉即可。

    <dependency>
      <groupId>xxx</groupId>
      <artifactId>xxx-api</artifactId>
      <version>1.0</version>
      <exclusions>
        <exclusion>
          <groupId>test</groupId>
          <artifactId>test-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    
  • 相关阅读:
    PostCSS: 跨浏览器兼容性
    js延迟执行函数
    angularjs怎么做动jq中toggle (ng-toggle in AngularJS )
    elasticsearch权威指南
    docker 运行 elasticsearch + kibana + head 集群
    RabbitMQ 的基本介绍
    docker 安装rabbitMQ
    Docker WARNING: IPv4 forwarding is disabled. Networking will not work.
    nginx 的 负载均衡
    Nginx 的 docker 部署
  • 原文地址:https://www.cnblogs.com/rwxwsblog/p/6652829.html
Copyright © 2011-2022 走看看