使用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仓库中引用依赖)