轻量级前端框架助力开发者提升项目效率与性能
636
2022-11-13
maven解决冲突以及常用命令
依赖冲突产生的原因:
传递依赖
maven坐标有一项scope此元素指的是任务的类路径(编译和运行时,测试等)以及如何限制依赖关系的传递性。
有 6 种可用的限定范围:
compile 编译依赖范围 如果没有指定 scope 标签,maven 默认为这个范围。
test 测试依赖范围 正常使用应用程序不需要依赖关系 Junit
provided 已提供依赖范围 它只适用于编译和测试 servlet-api
runtime 运行时依赖范围 此范围表示编译不需要依赖关系,而是用于执行 jdbc驱动
system和 provided 依赖范围一致,需要通过
import 导入依赖范围。使用该选项,通常需要
依赖传递性以及依赖范围
何为传递性依赖
依赖范围与传递性依赖的关系
依赖冲突解决方案
1、maven本身处理机制-依赖调解
短路径优先:假如有以下依赖:A -> B -> C ->X(版本 1.0) 和 A -> D -> X(版本 2.0),则优先解析较短路径的 X(版本 2.0);
2、可选依赖
optional可选依赖
A->B、B->X(可选),B->Y(可选) X,Y依赖不会传递到A中
可选依赖用于两个特性相互互斥,例如 mysql,PostgreSQL不能同时实现特性
3、排除依赖
4、归类依赖-版本锁定
优化依赖
1、查看已解析的依赖
mvn dependency:list
一层为顶层依赖,顶层依赖的依赖为二级依赖,以此类推
2、查看依赖树
mvn dependency:tree
通过上方的命令解析之后会构成依赖树,利用依赖树可以清楚看到依赖引入的传递路径
3、分析项目当前依赖
mvn dependency:analyze
Used undeclared dependencies found
Unused declared dependencies found
注意:这里说的实际代码没有用到,指的是在main/java和test里没有用的,但是并不是意味着真的没有用到这些包,有可能配置文件中引用或者其他扩展点自动加载这些包,所以我们在删除依赖的时候一定要小心,做好备份,因为这类引用maven是分析不出来的。
常用命令
修改版本号命令
安装插件
mvn vsersion:set -DnewVersion=1.1-SANPSHOT
激活环境
mvn clean package -P dev
跳过单元测试
-Dmaven.test.skip=true
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~