当前位置: 首页 > 面试题库 >

Golang依赖性管理最佳实践

嵇丰
2023-03-14
问题内容

在Golang中,我们可以将GitHub上的开源库指定为依赖项。例如:

import "github.com/RichardKnop/somelibrary"

如果我理解正确,这将尝试根据您的Go版本查找分支,默认为master。

因此,无法导入依赖的特定版本,例如:

import "github.com/RichardKnop/somelibrary#v1.4.8"

那么,在Go中管理依赖项的最佳实践是什么?

我可以看到两种方法。

I.版本模块

是否为具有重大变更的主要版本创建新模块?

例如,我的Go库可以定义模块v1和v2,因此您可以执行以下操作:

import "github.com/RichardKnop/somelibrary/v1"

要么:

import "github.com/RichardKnop/somelibrary/v2"

根据您的需要。必须对v1或v2进行任何更改,以免破坏任何API或正常工作的功能。

二。分叉

这样可以完全控制Go代码所需的外部依赖版本。

例如,您可以将github.com/RichardKnop/somelibrary分支到您自己的GitHub帐户中,然后在您的代码中执行以下操作:

import "github.com/ForkingUser/somelibrary"

然后,您将不得不分叉所有外部依赖项,这似乎有些过大。但是,它将完全控制版本。您可以将fork保持在您正在使用代码的版本上,并且仅在检查新版本的依赖项不会破坏任何内容后才更新fork。

有什么想法吗?


问题答案:

注意:2015年6月,Go 1.5中首次提供了对卖家的支持!

参见c / 10923 /:

GO15VENDOREXPERIMENT=1在环境中,这种CL变化的根据围棋1.5供应商建议的进口路径的分辨率:

  • 如果存在源目录d/vendor,则在以开头的子树中编译源文件时dimport "p"将其解释为import "d/vendor/p"存在。
  • 如果有多种可能的解决方案,则以最具体(最长)的路径为准。
  • 必须始终使用简写形式:任何导入路径都不能/vendor/明确包含“ ”。
  • 供应商软件包中的导入注释将被忽略。

2016年1月更新:Go 1.6将使供应商成为默认供应商。
如文章“使用GO15VENDOREXPERIMENT现在可以使用更便宜的工具”中所述:

1.6提供了/vendor/对大多数工具(例如oracle)的支持;使用Beta来重建它们。

  • 问题12278已解决。
  • 还有一个 有问题 goimports,且有CL是可以精挑细选


 类似资料:
  • 依赖管理实战 在前面我们学习了怎么使用Jetty插件来使用自带的Jetty容器来部署一个TODo应用,Jetty是一个轻量级的开发容器,启动非常快。很多企业级的应用都使用其他的Web容器来部署应用,假设你使用的是Apache Tomcat。

  • When you want to add, upgrade, or remove dependencies there are a couple of different commands you need to know. Each command will automatically update your package.json and yarn.lock files. Adding a

  • 简介 在第三章我们在构建To Do应用的时候学习到了怎么声明对Servlet ApI的依赖,Gradle的领域特定语言使得声明依赖和仓库变得很简单,你只需要在dependencies脚本中声明你所依赖的库,然后你需要告诉构建系统要从哪个仓库里下载依赖。提供了这两个信息,Gradle就能自动解析、下载依赖到你的电脑上,如果有需要会存储在本地缓存中必备以后需要。 这一章我们将介绍Gradle对依赖管理

  • PHP 有很多可供使用的库、框架和组件。通常你的项目都会使用到其中的若干项 - 这些就是项目的依赖。直到最近,PHP 也没有一个很好的方式来管理这些项目依赖。即使你通过手动的方式去管理,你依然会为自动加载器而担心。但现在这已经不再是问题了。 目前 PHP 有两个使用较多的包管理系统 - Composer 和 PEAR。Composer 是 PHP 所使用的最流行的包管理器,然而在很长的一段时间里,

  • 在San CLI UI中,可直接进行项目插件和依赖的安装、更新、卸载、删除等操作,依赖管理和插件管理的核心是npm包的安装可视化操作,好处是: npm install的可视化管理,组件升级更直观 操作简单,快速引入依赖 CLI的插件集合,更容易发现新包,提升检索效率 依赖管理 在依赖管理中,可以查看项目已安装的依赖列表,也可以在上方的搜索框中搜索项目已安装的依赖,然后更新或卸载它们。 安装依赖 点

  • SOFABoot 是在 Spring Boot 的基础上提供的功能扩展。基于 Spring Boot 的机制,SOFABoot 管理了 SOFA 中间件的依赖,并且提供了 Spring Boot 的 Starter,方便用户在 Spring Boot 中使用 SOFA 中间件。 SOFABoot 依赖管理 – Maven 在使用 SOFA 中间件之前,需要引入 SOFABoot 依赖管理。类似 S