使用maven时用到的一些问题

1.引用依赖时,出现传递依赖冲突问题,如果是某一个依赖中包含的部分依赖冲突,可以使用<exclusion>标签进行解决

如:

<dependency>
            <groupId>com.sgeye</groupId>
            <artifactId>base-framework-web</artifactId>
            <version>${base.version}</version> 
                <exclusions>
                <exclusion>
                    <artifactId>base-framework-dal</artifactId>
                    <groupId>cn.wonhigh</groupId>
                    <!-   注意:exclusion标签中不支持version属性   ->
                </exclusion>
            </exclusions>
 </dependency> 

  如何检查依赖是否冲突:https://www.cnblogs.com/shengulong/p/9242027.html,如果只是版本冲突的话启动是不会报错的。

 

2.微服务中引用其它子工程时,如果获取不到该工程中的类,则检查pom文件中该依赖的权限范围是否正确

权限范围详解:

  compile:(编译i范围),默认是compile。表示被依赖的项目需要参与当前项目的编译,后期的测试运行也参与其中,需要参与打包

  test:(测试范围),仅仅参与测试代码的编译、执行

  runtime:(运行时范围),表示被依赖项目无需参与项目的编译,不过后期的测试和运行需要参与

  provided:(已提供范围),表示打包的时候不用打包进去,别的设施会提供。事实上该依赖理论上可以参数编译,测试,运行等周期。但是在打包阶段做了exclude的动作

  system:(系统范围),与provided类似,但是必须显示的提供一个本地系统中jar文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是可以一直使用的,Maven也不会去仓库中去寻找它。如果将一个依赖范围设置为系统范围,必须同时提供一个systemPath元素。注意该范围不推荐使用(应该尽量从公共的或者定制的Maven仓库中引用依赖)

 

posted on 2020-06-09 18:00  永不宕机  阅读(221)  评论(0编辑  收藏  举报

导航