我的问题
弹性节拍 https://www.elastic.co/products/beats是一个用 Go 编写的日志传送程序的开源项目。它具有多种日志输出功能,包括控制台、Elasticsearch 和 Redis。我想将我自己的输出添加到 AWS Kinesis。
我已将存储库克隆到~/github/beats
,并尝试构建它:
$ cd filebeat; go build main.go
但是由于缺少库而失败这是该项目的一部分:
main.go:6:2: cannot find package "github.com/elastic/beats/filebeat/cmd" in any of:
/usr/local/go/src/github.com/elastic/beats/filebeat/cmd (from $GOROOT)
/Users/adam/go/src/github.com/elastic/beats/filebeat/cmd (from $GOPATH)
项目的目录依赖于同一存储库中的包,但不是在层次结构中查找某个目录,而是在GOPATH
.
So, go get github.com/elastic/beats/filebeat/cmd
获取了代码,现在go build main.go
作品。更改我的代码GOPATH
反映在这些构建中。
这给我带来了结构上的不便。我的一些代码位于工作目录,另一些位于我的GOPATH
并包含在我的工作目录中的代码中。
出于各种原因,我希望将所有代码放在一个目录中,尤其是将所有内容置于版本控制之下。
我尝试过什么
主要是寻找问题所在。我对 Go 很陌生,所以我可能错过了正确的术语。
我的问题
在 Go 中编辑导入库的代码的正确方法是什么?
在开发使用以下内容的项目时,此问题的先前答案已过时Go 模块 https://blog.golang.org/using-go-modules.
对于使用Go 模块 https://blog.golang.org/using-go-modules,可以使用以下命令将导入的库(例如 example.com/imported/module)替换为本地模块(例如 ../local/module):
go mod edit -replace=example.com/imported/module=./local/module
或者通过将以下行添加到go.mod
file:
replace example.com/imported/module => ./local/module
参考文档:https://golang.org/doc/modules/managing-dependency#unpublished https://golang.org/doc/modules/managing-dependencies#unpublished
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)