软件工程中的依赖管理

前端之家收集整理的这篇文章主要介绍了软件工程中的依赖管理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
软件工程是多人合作的结果,我们做项目的时候,经常需要使用前人的成果或者成熟的第三方包,而这些第三方包又可能再引用第四方包,并且可能存在版本上的区别,这就形成了依赖链。 手工管理依赖是相当麻烦且易出错,因此各大平台都有自己的手段。比如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命名,编译时所有依赖静态链接到可执行文件,这对第三方商业包的发展不利。

猜你在找的设计模式相关文章