Go 我怎样才能知道提取了哪个版本的依赖项?
在Go 我怎样才能知道提取了哪个版本的依赖项?,go,Go,在main.go中,我有以下导入语句: import ( "fmt" "log" "os" "os/signal" "strings" "syscall" "github.com/bwmarrin/discordgo" ) 我遇到了一个bug,这个bug应该在这个依赖关系的最新版本中修复我如何确定在构建部署的docker容器时引入了哪个版本? 在GoLand中,它不显示任何外部依赖项: 这是我的Dockerfile: FROM gola
main.go
中,我有以下导入语句:
import (
"fmt"
"log"
"os"
"os/signal"
"strings"
"syscall"
"github.com/bwmarrin/discordgo"
)
我遇到了一个bug,这个bug应该在这个依赖关系的最新版本中修复我如何确定在构建部署的docker容器时引入了哪个版本?
在GoLand中,它不显示任何外部依赖项:
这是我的Dockerfile:
FROM golang:1.12-alpine
RUN mkdir /app
WORKDIR /app
ADD src/ /app
ENV CGO_ENABLED=0
ENV GO111MODULE=off
# Fetch application dependencies
RUN apk add --no-cache --update git \
&& go get github.com/bwmarrin/discordgo \
&& go get github.com/jonas747/dshardmanager \
&& go get github.com/bugsnag/bugsnag-go \
&& apk del git
# Build binary
RUN go build -o main .
CMD ["/app/main"]
有几种方法可以解决这个问题。当您运行
go get remote/path/to/lib
时,它会将其安装到$GOPATH/src/remote/path/to/lib
,因此如果您将cd
放入该路径并运行git descripe--tags
,您将看到最新版本。但是,如果您使用go模块管理项目,您应该能够在依赖项名称后面的go.mod
文件中看到您正在使用的版本
因此,本质上:
go-get-github.com/bwmarrin/discordgo&&cd$GOPATH/src/github.com/bwmarrin/discordgo&&git-description——标签应该是快速而肮脏的方法,可以找到用于此特定场景的版本。如果您想要更新包的版本,请尝试使用go-get-u
或者可以使用依赖关系管理,例如dep
。()
您可以在Gopkg.toml
中指定您的版本
或go模块
,如果您使用的是golang的1.11版或更高版本 我看到您的GoLand SDK与Docker的版本不同。
如果使用1.12,可以尝试使用go模块。它将生成一个文件go.mod,该文件将描述您的软件包和版本,以及更好的管理。例如:
module github.com/example
require (
github.com/Azure/azure-storage-blob-go v0.0.0-20190104215108-45d0c5e3638e
github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23
github.com/gorilla/context v1.1.1 // indirect
github.com/gorilla/mux v1.6.2
github.com/patrickmn/go-cache v2.1.0+incompatible
github.com/prometheus/client_golang v0.9.2
github.com/sirupsen/logrus v1.3.0
golang.org/x/net v0.0.0-20181220203305-927f97764cc3
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 // indirect
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e // indirect
gopkg.in/resty.v1 v1.12.0
)