美文网首页maven
Maven踩坑记

Maven踩坑记

作者: Ko_oK_ | 来源:发表于2018-12-19 14:16 被阅读1次

    1.项目里重复依赖问题

    • 例如a.jar依赖某低版本x.jar,b.jar依赖高版本x.jar,如果在其他pom文件先依赖a.jar后依赖b.jar,则x.jar使用的版本是低版本的,maven会优先使用前部的子依赖,后部依赖会被标记为conflict冲突而强制使用前部依赖。
        解决方案:
    
    1.把最高版本的放在前面,maven3在引入这个版本后,不会引入其他版本。
        
    2.用把其他版本排除掉。
        
    3.直接在最前面引入适当版本的依赖,maven不会再引入子依赖。
    
    

    链接:Maven依赖重复及版本问题


    2.maven-pom文件的scope和maven远程仓库的scope区别

    • maven的scope默认是Compile的,对于scope=compile的情况,也就是说这个项目在编译,测试,运行阶段都需要这个artifact对应的jar包在classpath中。

    • maven仓库的Compile Dependencies或Provided Dependencies或者Test Dependencies对应pom的dependency里scope,例如:远程仓库某a.jar的Compile Dependencies包含x.jar,则本地项目里的pom.xml依赖a.jar后,必须保证编译时期x.jar也在classpath环境里,如果a.jar配置了依赖关系,则会自动下载x.jar,否则需要手动build进classpath.

    链接: maven dependency中scope=compile 和 provided区别


    3.maven-有些jar没有包含pom信息也可以自动下载依赖

    • 有时候maven远程仓库jar的Compile Dependencies包含其他jar,但是本身jar的META-INF没有pom.xml依然能自动下载依赖jar,可能是其他编译打包工具定义了依赖关系,maven也能识别进行自动下载,如Ant;否则需要自己手动添加到classpath,使项目在编译时期能找到所有依赖的jar。
        解决方案:
    
    1.使用IDE添加依赖。
        
    2.使用maven install然后添加到pom.xml。
    
    

    相关文章

      网友评论

        本文标题:Maven踩坑记

        本文链接:https://www.haomeiwen.com/subject/sekjkqtx.html