文章目录
- 1、optional
- 2、scope:一般作用在test中会加上
- 3、exclude
- 依赖冲突
1、optional
<optional>true</optional>
作用:
只在你自己的包中会使用,别人引入你的包后,不会出现在他们服务中
eg:
服务A的-api包,引入了easy-excel,加上这个后,服务B引入A-api后,easy-excel不会引入到B中
2、scope:一般作用在test中会加上
<scope>test</scope>
3、exclude
- 场景:
项目中引入了A包,A包下引入了B包,B包的版本为0.0.1。现线上B的0.0.1版本包存在问题,需要升级到0.0.2
- 解决
方式一:推动A包,将其依赖的B包升级到0.0.2版本,然后我们引入新的A包
方式二:忽略掉A中的B包,自定义B的版本,具体操作:
1、排查B包是在哪儿引入的【假如不知道是在A中引入的】
选择对应的pom -> 点击依赖分析 -> 全部依赖列表 -> 搜索
mvn dependency:tree , 然后搜索:com.amazonaws:mss-java
2、找到是谁引用了B包
这里是mall - common引入了B包
3、自定义B的版本
// 第一步,先自定义B,引入想要的版本
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>mss-java</artifactId>
<version>0.0.2</version> // 自定义新的版本
</dependency>
<dependency>
<groupId>xxx.common</groupId>
<artifactId>mall-common</artifactId>
<version>1.0.3</version>
// 第二步,在A包中,把B的依赖排除掉
<exclusions>
<exclusion>
<groupId>com.amazonaws</groupId>
<artifactId>mss-java</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖冲突
[ERROR] Rule 1: org.apache.maven.plugins.enforcer.BannedDependencies failed with message:
依赖禁止使用: commons-logging:commons-logging, 需排除此依赖文章来源:https://uudwc.com/A/Gd3gN
- 解决方式同上,找到哪个包使用了commons-logging,然后exclude就可以了
<dependency>
// 第一步找到是哪个包引入了commons-logging
<groupId>xxx.common</groupId>
<artifactId>mall-common</artifactId>
<version>1.0.3</version>
// 第二步,排除即可
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
4、如果父pom指定了版本,子也指定了版本,优先使用子pom的文章来源地址https://uudwc.com/A/Gd3gN