【问题标题】:Go package dependencies with go dep使用 go dep 打包依赖
【发布时间】:2017-11-29 12:11:18
【问题描述】:

我在同一个 github 存储库中有以下项目结构:

https://github.com/userX/go-project/cmd/server/main.go
https://github.com/userX/go-project/pkg/package1
https://github.com/userX/go-project/pkg/package2
https://github.com/userX/go-project/pkg/package2
https://github.com/userX/go-project/Gopkg.toml

由于某种原因,我的项目作为依赖项位于文件夹 vendor 中。而且我不希望这样,因为如果我更改package1,我需要先推送它以在package2 中获得最新更改。因为它使用的是 vendor 文件夹中的文件。

我正在使用完整路径导入:import "github.com/userX/go-project/pkg/package1"

我做错了什么?

环境变量:GOPATH="/Users/username/go"

vendor 文件夹位于项目的根文件夹中,我正在使用dep (https://github.com/golang/dep) 来管理我的依赖项!

在我的供应商文件夹中,我可以找到我的第三方库以及我自己的项目。

├── Dockerfile
├── Gopkg.lock
├── Gopkg.toml
├── LICENSE
├── Makefile
├── README.md
├── cmd
│   ├── server
│   │   └── main.go
│   └── cli
│       └── main.go
├── docker-compose.yml
├── pkg
│   ├── package1
│   │   ├── file.go
│   ├── package2
│   │   └── file.go
└── vendor
    └── github.com
        ├── julienschmidt
        │   └── httprouter
        │       ├── LICENSE
        └── userX
            └── go-project
                ├── Dockerfile
                ├── Gopkg.lock
                ├── Gopkg.toml
                ├── LICENSE
                ├── Makefile
                ├── README.md
                ├── cmd
                │   ├── server
                │   │   └── main.go
                │   └── cli
                │       └── main.go
                ├── docker-compose.yml
                └── pkg
                    ├── package1
                    │   ├── file.go
                    ├── pacakge2
                        └── file.go

编辑:在dep ensure --update 之后更新了我的文件结构

基本上我的步骤: 1.去get -u github.com/golang/dep/cmd/dep 2. 深度初始化 3. dep 确保 --update

Gopkg.lock 包含有关我自己的项目的信息:

[[projects]]
  branch = "master"
  name = "github.com/userX/go-project"
  packages = ["pkg/package1","pkg/package2"]
  revision = "560d3aaasdas53562c3eb083252e54ef8ee468bea74ba"

【问题讨论】:

  • 如果您不想在供应商文件夹中放置某些内容,请不要将其放在那里。您需要显示供应商文件夹的位置、其中的内容以及您使用什么工具来管理它。
  • 编辑了我的问题以添加更多上下文!
  • 如果vendor/go-project 中,则dep 不应将go-project 包添加到供应商文件夹。我们需要看看如何重现这个问题。您还可以确保您使用的是最新版本的 dep,并自行修复供应商文件夹,或者将其删除并重新开始。
  • 你能用环境栏一步一步地展示你如何安装dep,启动项目并添加依赖项

标签: go godeps


【解决方案1】:

看起来您应该看看project structure,因为对我来说,您拥有的唯一目录似乎是vendor 目录。还有看看vendor directories

【讨论】:

  • 我的根文件夹中有 3 个目录,(cmd、pkg、vendor)但我没有任何 go 文件。
  • 你的项目结构应该是:go-project/src/github.com/userX/go-project/cmd go-project/src/github.com/userX/go-project/pkg go- project/src/github.com/userX/go-project/vendor
  • 是的,这是我的问题,你是对的!我已将我的项目克隆到错误的文件夹 src/go-project 而不是 src/github.com/userX/go-project :(真丢人!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
  • 2023-03-11
相关资源
最近更新 更多