05 | 手把手教你依赖管理
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文总结了软件依赖管理的重要性以及各种依赖管理工具的应用。首先讨论了依赖管理的挑战,指出了依赖冲突可能导致的严重问题。随后介绍了各种平台的依赖管理工具,包括操作系统的yum、apt等,以及编程语言的Maven、npm等。以Maven为例,详细解释了其如何管理Java项目的依赖,包括POM文件的结构和依赖配置的含义。此外,还介绍了Maven的依赖仲裁原则,即最短路径优先原则和第一声明优先原则。接着分享了一些Maven的最佳实践,包括在父模块多使用dependencyManagement来定义依赖、使用BOM进行版本定义等。最后,提出了思考题,鼓励读者对比Maven与其他语言的依赖管理工具,如npm、pip、gem等,探讨它们各自的优缺点。整体而言,本文通过实际案例和技术原理,全面阐述了依赖管理的重要性和各种依赖管理工具的应用,对于软件开发人员具有一定的参考价值。
《持续交付 36 讲》,新⼈⾸单¥59
全部留言(24)
- 最新
- 精选
- 阳阳置顶其实我们关注的是持续集成在携程的解决方案和技术栈,组合思路等。我想愿意关注持续集成的技术,都对Maven不陌生。
作者回复: 要考虑不同层次的读者:)
2018-07-16313 - 大M我是个前端,对后台这套会有一些模糊的概念,不过还是能听得懂,在前端的包管理中,我现在用的是yarn,前期也出现过不同环境的一些表现不同,最后确定是版本问题,当时的npm 并没有版本锁定功能,我后面转到了用yarn,使用yarn 会在本地根目录自动新建yarn.lock 文件来锁定依赖版本,我们在自动构建集成服务器上不能使用开发机器的node_modules ,因为操作系统有别,需要单独安装依赖,通常我会把package.json 和yarn.lock 传到构建服务器,通过yarn 来安装这个nodemodles 。
作者回复: 棒,前端的包管理一直都被诟病的,不过好在大家都是聪明的程序员:)
2018-07-173 - 蒜儿老师好,有个问题一直比较困惑,一般在开发分支上pom文件里面模块的版本号是snapshot的,合并到master分支准备发布或者测试的时候需要把模块的版本号和相关依赖的版本号的snapshot去掉改为正式版本,目前我们都是手工去改,这个怎么能自动化修改,还是有其他方式进行控制,谢谢
作者回复: 携程自己做了一个jar包的发布工具,每次发布时可修改version,也会对version做一些检查,比如唯一检查等,发布前根据version会产生一个修改pom的push。用这个工具可以随意发布项目中的任何jar,但本质上version还是手工控制的。开发明确版本号还是很有必要的,只是把操作变简单一点
2018-09-111 - 酒粒老师,请教下,gradle 打包war包没有把依赖的jar包所依赖的包一并打包到war里面,总是缺少了些jar,能指点下大概是哪里出问题了吗
作者回复: 这个不太好说,多数还是配置问题
2020-04-02 - bean超级父POM中一般包含哪些jar包?有些项目之间的共同点不多,或者它们的技术选型不同,不想下载父POM中用不到的包怎么办?
作者回复: 父pom里都是dependency management,子pom不引用就不会下载这些父pom中的jar
2018-08-01 - 林007pom继承树给个例子
作者回复: 文章中最佳实践篇章有例子的:)
2018-07-30 - 付盼星老师好,看到依赖管理的继承,我想到了配置管理的继承,我们公司目前用的是spring cloud的配置服务,研发一般在项目的bootstrap.yml里面指定配置中心的地址和要激活的配置,但是发现大家的配置文件里面的内容有很多重复配置条目,这种情况能否也做到继承父配置文件?
作者回复: 配置中心地址是一个比较特殊的配置,也可以说是所有其他配置获取的基础,我们采用的是基于环境和约定获取这个配置值,具有的方法在环境一讲中会讲到
2018-07-15 - 铭熙编译用到的命令是统一的么?如何管理的。
作者回复: 基本统一,适度自由,通过编译平台管理,下一章就讲编译了,会有讲到
2018-07-14 - 小裙子不够详细,结合mvn实例比较好2018-09-275
- 天涯既然讲到maven,希望能分享些实际应用经验和方案,在公司大规模场景中的pom架构,流程,和版本如何有效管理2018-07-165