持续交付36讲
王潇俊
携程系统研发部总监
立即订阅
7125 人已学习
课程目录
已完结 41 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 量身定制你的持续交付体系
免费
基本概念 (3讲)
01 | 持续交付到底有什么价值?
02 | 影响持续交付的因素有哪些?
03 | 持续交付和DevOps是一对好基友
配置管理 (4讲)
04 | 一切的源头,代码分支策略的选择
05 | 手把手教你依赖管理
06 | 代码回滚,你真的理解吗?
07 |  “两个披萨”团队的代码管理实际案例
环境管理 (6讲)
08 | 测试环境要多少?从现实需求说起
09 | 测试环境要多少?从成本与效率说起
10 | 让环境自己说话,论环境自描述的重要性
11 | “配置”是把双刃剑,带你了解各种配置方法
12 | 极限挑战,如何做到分钟级搭建环境?
13 | 容器技术真的是环境管理的救星吗?
构建集成 (5讲)
14 | 如何做到构建的提速,再提速!
15 | 构建检测,无规矩不成方圆
16 | 构建资源的弹性伸缩
17 | 容器镜像构建的那些事儿
18 | 如何做好容器镜像的个性化及合规检查?
发布及监控 (6讲)
19 | 发布是持续交付的最后一公里
20 | Immutable!任何变更都需要发布
21 | 发布系统一定要注意用户体验
22 | 发布系统的核心架构和功能设计
23 | 业务及系统架构对发布的影响
24 | 如何利用监控保障发布质量?
测试管理 (3讲)
25 | 代码静态检查实践
26 | 越来越重要的破坏性测试
27 | 利用Mock与回放技术助力自动化回归
持续交付平台化 (3讲)
28 | 持续交付为什么要平台化设计?
29 | 计算资源也是交付的内容
30 | 持续交付中有哪些宝贵数据?
持续交付移动App (3讲)
31 | 了解移动App的持续交付生命周期
32 | 细谈移动APP的交付流水线(pipeline)
33 | 进阶,如何进一步提升移动APP的交付效率?
实践案例 (4讲)
34 | 快速构建持续交付系统(一):需求分析
35 | 快速构建持续交付系统(二):GitLab 解决代码管理问题
36 | 快速构建持续交付系统(三):Jenkins 解决集成打包问题
37 | 快速构建持续交付系统(四):Ansible 解决自动部署问题
特别放送 (2讲)
持续交付专栏特别放送 | 答疑解惑
持续交付专栏特别放送 | 高效学习指南
结束语 (1讲)
结束语 | 越痛苦的事,越要经常做
持续交付36讲
登录|注册

05 | 手把手教你依赖管理

王潇俊 2018-07-14
软件工程是多人合作的结果,我们在开发软件的时候经常会使用一些别人编写好的,比较成熟的库。
比如,早期的前端开发用到了 jQuery 库,那么通常的做法是去官网下载一个最新版本的 jQuery,然后放在自己本地的项目中。对于简单的前端项目来说,这样可以简单粗暴地达到目的。
但当项目越来越庞大,除了 jQuery 之外,你还会依赖一些其他的第三方库。比如 Bootstrap 与 Chosen,这两个流行的前端库也都依赖 jQuery,如果这些第三方库依赖的 jQuery 版本一致还好,但大多数情况并没有这么乐观:
你的项目依赖的 jQuery 版本是 1.0.0 ,Bootstrap 依赖的版本是 1.1.0,而 Chosen 依赖的版本是 1.2.0,看上去都是小版本不一致,一开始并没有发现任何问题,但是如果到后期发现不兼容,可能就为时已晚了。
所以,你需要在确定依赖之前,就把整个系统的依赖全部梳理一遍,保证每个依赖都不会有冲突问题。
你可能会质疑,这个前端工程师一定是初级的,事先都不会确认 Bootstrap 和 Chosen 依赖的版本吗,直接选择依赖 jQuery 1.0.0 版本的不就行了?
这么说有一定道理,但是手工维护这些依赖是相当麻烦且容易出错的。随便找一个比较流行的开源软件,你都会发现它依赖了大量的第三方库,而这些第三方库又依赖着其他的第三方库,形成了一条十分复杂的依赖链。靠人工去解决这个依赖链一定会让你怀疑人生,因此你需要一些工具去管理项目的依赖。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《持续交付36讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(20)

  • 阳阳 置顶
    其实我们关注的是持续集成在携程的解决方案和技术栈,组合思路等。我想愿意关注持续集成的技术,都对Maven不陌生。

    作者回复: 要考虑不同层次的读者:)

    2018-07-16
    6
  • 天涯
    既然讲到maven,希望能分享些实际应用经验和方案,在公司大规模场景中的pom架构,流程,和版本如何有效管理
    2018-07-16
    3
  • 小小
    不要在在线编译环境中使用 mvn install 命令,否则会埋下很多意想不到并且非常难以排查的坑:该命令会将同项目中编译产生的 jar 包缓存在编译系统本地,覆盖 mvn 仓库中真正应该被引用的 jar 包。–––老师这句话不理解,在jenkins中我们常用mvn clean install -U进行构建,installl作为构建生命周期的一部分,不用该命令怎么生成对应的jar或war?
    2019-05-13
    2
    2
  • 小裙子
    不够详细,结合mvn实例比较好
    2018-09-27
    2
  • 小胖胖
    为什么变成了了讲maven😓
    2018-07-15
    2
  • Robert小七
    老师,您好!我们公司的项目下面有20多个子项目,其中4个可以独立部署,其他都是二方库!每次编译时间长,且经常出错!如果我们要对项目拆分,是否需要把 父pom中定义的版本号和properties等全部写到每个子pom中
    2019-06-29
    1
  • 骑着毛驴看世界
    为什么变成了了讲maven
    2018-07-16
    1
  • 天天向上
    统一的 BOM 来管理公共组件的版本,这个BOM指的是什么呀?
    2019-11-30
  • Robert小七
    对于spring boot这样的多模块架构,如何对项目进行拆分,更好的接入到devops平台?比如在父pom中定义了properties,拆分时如何处理?
    2019-07-07
  • 我心飞翔
    我对maven确实陌生,没接触过java,我本身是做c开发出身的,一直做Linux下的开发。对yum了解一些
    2019-02-17
  • YoungerChina
    并不能解决遇到的依赖管理难题!
    1.开源工具能解决依赖问题,但不能依赖管理问题!
    2.yum能帮助我们解决依赖问题,必须是包编译过程中的依赖规则是严谨和科学的,对于依赖规则不要紧的包哪?
    3.依赖基本要求大于某个版本,所以还是没有说如何固定版本?
    2019-02-11
  • Bruce晓勇
    大公司需要自建组件仓库么
    2019-01-15
  • kursk.ye
    举个例子,依赖范围这一项,Maven 在不同的时期会使用不同的 classpath
    时期 这个词改为 阶段 更合适
    2019-01-05
  • 蒜儿
    老师好,有个问题一直比较困惑,一般在开发分支上pom文件里面模块的版本号是snapshot的,合并到master分支准备发布或者测试的时候需要把模块的版本号和相关依赖的版本号的snapshot去掉改为正式版本,目前我们都是手工去改,这个怎么能自动化修改,还是有其他方式进行控制,谢谢

    作者回复: 携程自己做了一个jar包的发布工具,每次发布时可修改version,也会对version做一些检查,比如唯一检查等,发布前根据version会产生一个修改pom的push。用这个工具可以随意发布项目中的任何jar,但本质上version还是手工控制的。开发明确版本号还是很有必要的,只是把操作变简单一点

    2018-09-11
  • bean
    超级父POM中一般包含哪些jar包?有些项目之间的共同点不多,或者它们的技术选型不同,不想下载父POM中用不到的包怎么办?

    作者回复: 父pom里都是dependency management,子pom不引用就不会下载这些父pom中的jar

    2018-08-01
  • 林007
    pom继承树给个例子

    作者回复: 文章中最佳实践篇章有例子的:)

    2018-07-30
  • LB
    是否有些太细节?
    2018-07-18
  • 大M
    我是个前端,对后台这套会有一些模糊的概念,不过还是能听得懂,在前端的包管理中,我现在用的是yarn,前期也出现过不同环境的一些表现不同,最后确定是版本问题,当时的npm 并没有版本锁定功能,我后面转到了用yarn,使用yarn 会在本地根目录自动新建yarn.lock 文件来锁定依赖版本,我们在自动构建集成服务器上不能使用开发机器的node_modules ,因为操作系统有别,需要单独安装依赖,通常我会把package.json 和yarn.lock 传到构建服务器,通过yarn 来安装这个nodemodles 。

    作者回复: 棒,前端的包管理一直都被诟病的,不过好在大家都是聪明的程序员:)

    2018-07-17
  • 付盼星
    老师好,看到依赖管理的继承,我想到了配置管理的继承,我们公司目前用的是spring cloud的配置服务,研发一般在项目的bootstrap.yml里面指定配置中心的地址和要激活的配置,但是发现大家的配置文件里面的内容有很多重复配置条目,这种情况能否也做到继承父配置文件?

    作者回复: 配置中心地址是一个比较特殊的配置,也可以说是所有其他配置获取的基础,我们采用的是基于环境和约定获取这个配置值,具有的方法在环境一讲中会讲到

    2018-07-15
  • 铭熙
    编译用到的命令是统一的么?如何管理的。

    作者回复: 基本统一,适度自由,通过编译平台管理,下一章就讲编译了,会有讲到

    2018-07-14
收起评论
20
返回
顶部