软件工程中的依赖管理

软件工程是多人合作的结果,我们做项目的时候,经常需要使用前人的成果或者成熟的第三方包,而这些第三方包又可能再引用第四方包,并且可能存在版本上的区别,这就形成了依赖链。 手工管理依赖是相当麻烦且易出错,因此各大平台都有自己的手段。比如centos下的yum, debian下的apt-get,可以全自动安装各种你需要的包。解决思路也很简单,就是大家把要使用的依赖放到共同的仓库中,谁需要就来仓库拿。 各大语言也有自己的依赖管理机制,java下使用maven, .net使用nuget, node.js使用npm,go语言使用go get,要达到的目的一样,但手段各有差别。 maven使用xml来描述,在eclipse中有可视化插件辅助。maven本质上是一个微框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,插件本身可以包罗万象,完成非常丰富的功能。可以使用nexus来构建私有仓库。 .net早期没有依赖管理,可能是因为.net项目规模有限,以及大家喜欢从微软拿来主义,早期开源生态不太繁荣,不像java那样百花齐放。.net现在使用nuget管理依赖,配合强大的vs ide,非常方便快捷。并且自建nuget仓库也就是简单的网站,相比maven,要轻量许多。当然,maven可以完成的事情更多,比如自动构建。 npm使用json来描述依赖,天生的优势就是简单明了,没有xml那些繁杂的tag。npm命令使用相当灵活,安装、升级、全局、私有都考虑到了,特别是它的依赖可以使用版本大于或者小于某个版本,或者直接使用最新版本,很有特色。如果你想做npm私有库,就比较麻烦了,麻烦在两个地方:安装couchdb和同步官方仓库。我自己做了全量同步(因网络原因排除大包), 有同学提出了增量按需同步,有兴趣者自行研究。 go包依赖中在相同gopath中是没有版本管理的,之前我在go的笔记中也得到过,使用方式和npm差不多,但目录式的管理有点类似java的package命名,编译时所有依赖静态链接到可执行文件,这对第三方商业包的发展不利。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值