如何将第三方库导入特定文件夹

时间:2018-02-13 13:52:52

标签: go

作为Go的新手,我正在尝试将第三方库导入供应商文件夹。我按照Go docs给出的说明进行操作,但没有找到任何关于第三方库的信息。

1 个答案:

答案 0 :(得分:3)

更新(2019)

Go环境正逐渐开始从像dep这样的工具转向围绕模块的原生Go工具。虽然解释模型超出了本答案的范围,但您可以从以下位置查看模块:

remove() https://blog.golang.org/modules2019

tldr

安装dep:go get -u github.com/golang/dep/cmd/dep

在项目中运行:dep init

答案

在我看来,解决此问题的最简单方法是使用dep依赖关系管理工具。该工具使用非常广泛且易于使用。这是一个典型的工作流程:

首先,您应该安装dep程序。

go get -u github.com/golang/dep/cmd/dep

现在您可以访问dep命令。完整文档可在此处找到:https://github.com/golang/go/wiki/Modules

这就是将第三方库放入供应商目录的方法。在下面的示例中,我们将使用url路由器github.com/gorilla/mux。

首先,在你的代码中导入像普通的库一样。

package main

import "github.com/gorilla/mux"

func main {
    r := mux.NewRouter()
    r.HandleFunc("/", HomeHandler)
    r.HandleFunc("/products", ProductsHandler)
    r.HandleFunc("/articles", ArticlesHandler)
    http.Handle("/", r)
}

现在我们要做的就是运行dep init命令。这将查找所有导入并为您创建供应商目录,其中包含您所需的所有依赖项。 请注意,dep会自动分析您的导入。

深度

初始化dep后,您可以正常开始处理项目。添加新库时,可以运行dep ensure命令在供应商目录中获取新添加的第三方库。

此外,dep使您能够锁定特定版本的第三方库。 dep init使用两个文件初始化您的项目:Gopkg.toml和Gopkg.lock。 Gopkg.toml文件包含有关哪些依赖项将在哪个版本的断言。例如,如果您希望gorilla mux库保留在版本v1.4.0,则可以将以下行添加到Gopkg.toml:

[[constraint]]
name = "github.com/gorilla/mux"
version = "=v1.4.0"

Dep还具有升级依赖项,从供应商中删除未使用的依赖项等功能。查看文档以获取更多详细信息。 https://golang.github.io/dep/