阅读 376

模块化日常:开源库与私有库重名

主角:LPDNetworkingKit

起因:LPDNetworkingKit 本身是我们组在 GitHub 上开源的一个库,然后,哎嘿,不知道啥原因,我们内网 GitLab 上还有一个私有的 LPDNetworkingKit,这个版本的代码还跟开源的不一样,掺杂了业务代码。没办法,手头正在编译的 BKit 库的发版需要依赖这个库,于是,开始考虑怎么处理。

经过:起先,为了防止跟开源的辣个版本冲突,我打算改个名,然后改完发版,搞定。然后修改依赖,跑起来,编译失败。一看,卧槽,BKit 不仅直接依赖了 LPDNetworkingKit,还依赖了一个 LPDMvvmKit,这个库是开源的,并且也依赖了开源的 LPDNetworkingKit。哭了,照着改名发私有的思路继续下去,估计后面不知道会起多少连锁反应...果断想其它办法。然后,去查了一圈 CocoaPods 私有库和公开库重名的问题,发现不支持指定依赖来源,但是可以通过 tag 区分,于是乎开源的版本号是 0.3.0 这种,私有库咱直接发了一个 3.2.1 的版本,然后在 BKit 里指定到最新的版本,也就变成了指向我们私有的版本,哎嘿嘿,搞定。

PS:唔,后续发现,pod lib lintpod repo push--sources 指定的 source 的先后顺序会影响重名库的引用,如果多个 source 有多个重名库的话,取前面一个 source 的,不知道是不是玄学。

结论:目前只是权宜之计,私有的 LPDNetworkingKit 后面会被清理掉,不然总有冲突的一天。


如有任何知识产权、版权问题或理论错误,还请指正。
https://juejin.im/post/5a4b53546fb9a0451e402cbc
转载请注明原作者及以上信息。

评论