zoukankan      html  css  js  c++  java
  • maven dependency的版本冲突问题

    在改造一个旧项目中,遇到各种问题。

    旧项目有十多个模块,因为没有一个统一的父pom,它们对第三方的jar的版本没有统一。 虽然也存在公共的依赖模块,比如commons、util,但是,我们的模块中,有时候又会自己重复引用一些基础的、已经在公共依赖模块存在的对三方jar, 这样 就造成了很多的冲突。

    当我考虑统一到一个父pom里面去的时候,发现了很多问题。

     1 

    [ERROR] 

    [ERROR] The project com.wisdom:mint:1.0-SNAPSHOT (F:devSVNcodemintpom.xml) has 1 error
    [ERROR] Non-resolvable import POM: Could not transfer artifact io.netty:netty-bom:pom:3.6.10.Final from/to wisdom-public (http://192.168.1.95:8081/repository/wisdom-test67/): Failed to transfer file: http://192.168.1.95:8081/repository/wisdom-test67/io/netty/netty-bom/3.6.10.Final/netty-bom-3.6.10.Final.pom. Return code is: 400 , ReasonPhrase:Repository version policy: SNAPSHOT does not allow version: 3.6.10.Final. @ org.springframework.boot:spring-boot-dependencies:2.1.0.RELEASE, C:Users x63.m2 epositoryorgspringframeworkootspring-boot-dependencies2.1.0.RELEASEspring-boot-dependencies-2.1.0.RELEASE.pom, line 988, column 25 -> [Help 2]
    [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]

    3.6.10.Final.是什么东东,发现是 子模块中写死的一个 property, 虽然没有在 dependency中使用它,但是它却生效了,真是神奇了。 大概是它把 spring-boot 的同名的 property 覆盖了吧, 但是 spring-boot 的当前版本依赖的netty 并不是 3.6.10.Final., 所以就出现了这个问题。 

    怎么解决: 把3.6.10.Final. 的property 删除掉就好了。不过呢,“SNAPSHOT does not allow version” 是啥?    搞不懂

    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project mint: Could not resolve dependencies for project com.wisdom:mint:jar:1.0-SNAPSHOT: Failed to collect dependencies at org.springframework.boot:spring-boot-starter-web:jar:2.1.0.RELEASE -> org.hibernate.validator:hibernate-validator:jar:5.4.1.Final: Failed to read artifact descriptor for org.hibernate.validator:hibernate-validator:jar:5.4.1.Final: Could not transfer artifact org.hibernate.validator:hibernate-validator:pom:5.4.1.Final from/to wisdom-public (http://192.168.1.95:8081/repository/wisdom-test67/): Failed to transfer file: http://192.168.1.95:8081/repository/wisdom-test67/org/hibernate/validator/hibernate-validator/5.4.1.Final/hibernate-validator-5.4.1.Final.pom. Return code is: 400 , ReasonPhrase:Repository version policy: SNAPSHOT does not allow version: 5.4.1.Final. -> [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/DependencyResolutionException

    同上的原因。

     2

    [WARNING] Found duplicate and different resources in [org.springframework.data:spring-data-commons:1.13.17.RELEASE, org.springframework.data:spring-data-keyvalue:1.2.17.RELEASE, org.springframework.data:spring-data-redis:1.8.17.RELEASE]:
    [WARNING] changelog.txt

    ...

    [WARNING] Found duplicate classes/resources in test classpath.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 14.474 s
    [INFO] Finished at: 2019-02-22T15:19:00+08:00
    [INFO] Final Memory: 44M/418M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.basepom.maven:duplicate-finder-maven-plugin:1.2.1:check (duplicate-dependencies) on project mint: Found duplicate classes/resources! -> [Help 1]

    一个changelog.txt 竟然引起了duplicate classes/resources问题,而且导致了编译错误。没有办法,只有把 相关的重复的jar 依赖去掉。去掉就好了。


    经过仔细查找,发现 spring-boot-starters-1.5.18 依赖了duplicate-finder-maven-plugin

    C:Users x63.m2 epositoryorgspringframeworkootspring-boot-starters1.5.18.RELEASEspring-boot-starters-1.5.18.RELEASE.pom

                <plugin>
                    <groupId>org.basepom.maven</groupId>
                    <artifactId>duplicate-finder-maven-plugin</artifactId>
                    <version>1.2.1</version>
                    <executions>
                        <execution>
                            <id>duplicate-dependencies</id>
                            <phase>validate</phase>
                            <goals>
                                <goal>check</goal>
                            </goals>
                            <configuration>
                                <failBuildInCaseOfConflict>true</failBuildInCaseOfConflict>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

    3

    还遇到各种神奇问题,format 也有问题。

    [ERROR] Failed to execute goal io.spring.javaformat:spring-javaformat-maven-plugin:0.0.6:validate (default) on project wisteria-api: Formatting violations found in the following files:
    [ERROR] * F:devSVNcodewisteriawisteria-apisrcmainjavacomwisdomwisteriaconstantssearchTradeSearch.java
    [ERROR] * F:devSVNcodewisteriawisteria-apisrcmainjavacomwisdomwisteria radeserviceAccountTradeService.java
    [ERROR] 
    [ERROR] Run `spring-javaformat:apply` to fix.
    [ERROR] -> [Help 1]

    经过仔细查找,发现spring-boot-parent-1.5.18 依赖了spring-javaformat-maven-plugin:

    C:/Users/rx63/.m2/repository/org/springframework/boot/spring-boot-parent/1.5.18.RELEASE/spring-boot-parent-1.5.18.RELEASE.pom

                <plugin>
                    <groupId>io.spring.javaformat</groupId>
                    <artifactId>spring-javaformat-maven-plugin</artifactId>
                    <version>${spring-javaformat.version}</version>
                    <executions>
                        <execution>
                            <phase>validate</phase>
                            <configuration>
                                <skip>${disable.checks}</skip>
                            </configuration>
                            <goals>
                                <goal>validate</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

    按照提示,执行下面的 命令 就好了:

    mvn spring-javaformat:apply

    javaformat这个插件真是烦人,只能接受tab作为缩进,4个空格等是不能通过validate的(我尝试通过IDEA对代码进行reformat,结果,这样的代码竟然都不能通过),

    后面又做了对比,发现 spring-boot-1.5.18 这个版本真是奇葩,只有它是有duplicate-finder、 spring-javaformat 这些功能,其他的版本都没有的!! 

    4
    [INFO] --- maven-enforcer-plugin:1.4.1:enforce (enforce-rules) @ cactus-provider ---
    [WARNING] Rule 0: org.apache.maven.plugins.enforcer.BannedDependencies failed with message:
    Found Banned Dependency: commons-logging:commons-logging:jar:1.1.1
    Use 'mvn dependency:tree' to locate the source of the banned dependencies.

    [WARNING] Found duplicate (but equal) classes in [org.apache.tomcat.embed:tomcat-embed-core:8.5.35, org.apache.tomcat:tomcat-juli:8.5.35]:

    commons-logging:commons-logging:jar:1.1.1  被Banned 了 ??  不是很好理解,暂时把commons-logging 依赖去掉吧, 纳入exclusion 之后就好了!

  • 相关阅读:
    阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_04-用户认证技术方案-SpringSecurityOauth2
    阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_03-用户认证技术方案-Oauth2协议
    阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_02-用户认证技术方案-单点登录
    阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_01-用户认证需求分析
    阶段5 3.微服务项目【学成在线】_day08 课程图片管理 分布式文件系统_06-分布式文件系统研究-fastDFS安装及配置文件说明
    阶段5 3.微服务项目【学成在线】_day08 课程图片管理 分布式文件系统_05-分布式文件系统研究-fastDSF文件上传和下载流程
    阶段5 3.微服务项目【学成在线】_day08 课程图片管理 分布式文件系统_04-分布式文件系统研究-fastDSF架构介绍
    阶段5 3.微服务项目【学成在线】_day08 课程图片管理 分布式文件系统_02-分布式文件系统研究-什么是文件系统
    阶段5 3.微服务项目【学成在线】_day08 课程图片管理 分布式文件系统_03-分布式文件系统研究-什么是分布式文件系统
    阶段5 3.微服务项目【学成在线】_day08 课程图片管理 分布式文件系统_01-分布式文件系统研究-技术应用场景
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/10420089.html
Copyright © 2011-2022 走看看