加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

软件工程中的依赖管理

发布时间:2020-12-13 22:45:38 所属栏目:百科 来源:网络整理
导读:软件工程是多人合作的结果,我们做项目的时候,经常需要使用前人的成果或者成熟的第三方包,而这些第三方包又可能再引用第四方包,并且可能存在版本上的区别,这就形成了依赖链。 手工管理依赖是相当麻烦且易出错,因此各大平台都有自己的手段。比如centos下
软件工程是多人合作的结果,我们做项目的时候,经常需要使用前人的成果或者成熟的第三方包,而这些第三方包又可能再引用第四方包,并且可能存在版本上的区别,这就形成了依赖链。 手工管理依赖是相当麻烦且易出错,因此各大平台都有自己的手段。比如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命名,编译时所有依赖静态链接到可执行文件,这对第三方商业包的发展不利。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读